[PHP] Ricavare giorno della settimana da un campo data

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Un saluto a tutti,
avrei la necessità di estrarre da una tabella il campo data scritto nel formato yyyy-mm-gg e convertire tale campo nel suo corrispondente giorno della settimana (Lun - Mar - Mer - ecc) per poi memorizzare il valore estratto in una variabile.

In sostanza ho una tabella con circa 1000 record, ho creato un form con 6 righe :
Lunedi
Martedi
Mercoledi
Giovedi
Venerdi
Sabato

dovrei fare una cosa del genere:
Seleziona tutti i campi dalla tabella appuntamenti aggiungi accanto al campo data il relativo corrispondente giorno della settimana .

Mi dareste una mano a capire come strutturare la query

o_O
 

cris8380

Moderatore
Membro dello Staff
MOD
3 Giu 2016
261
14
18
40
Ciao, la possibilità di crearti uno script che esegua quello che cerchi qui non è possibile, ovvero l'unica cosa, se vuoi e cercare nella sezione offerte di lavoro li trovi la soluzione a tutti i tuoi mali...:confused::confused::confused:

Se invece hai qualcosa di pronto, saremo qui a darti una mano..

A presto.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi fare una funzione del genere
PHP:
<?php
function giorno($d){
 
    //attento la data deve essere nel formato yyyy-mm-gg
    //anche come separatori (se altri separatori devi modificare)
    $d_ex=explode("-", $d);//attento al separatore
    $d_ts=mktime(0,0,0,$d_ex[1],$d_ex[2],$d_ex[0]);
    $num_gg=(int)date("N",$d_ts);//1 (for Monday) through 7 (for Sunday)
    //per nomi in italiano
    $giorno=array('','lunedì','martedì','mercoledì','giovedì','venerdì','sabato','domenica');//0 vuoto
    return $giorno[$num_gg];
}
//********
$data="2016-07-03";//domenica
echo giorno($data);//output domenica
?>
ho messo l'echo ma tu puo assegnare ad una variabile da usare dove vuoi
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
forse non ho capito bene la tua domanda, vorresti aggiungere un campo e aggiornare tutti i record aggiungendo il nome del giorno accanto al campo in cui hai la data?
è così?
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
ciao
forse non ho capito bene la tua domanda, vorresti aggiungere un campo e aggiornare tutti i record aggiungendo il nome del giorno accanto al campo in cui hai la data?
è così?


Ciao,
esatto, vorrei poter aggiungere un campo e updatare tutti i record, cosi facendo avrò nel db accanto alla data espressa nel formato yyyy-mm-gg anche il relativo giorno ...

Grazie mille per le dritte ;)
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ciao, la possibilità di crearti uno script che esegua quello che cerchi qui non è possibile, ovvero l'unica cosa, se vuoi e cercare nella sezione offerte di lavoro li trovi la soluzione a tutti i tuoi mali...:confused::confused::confused:

Se invece hai qualcosa di pronto, saremo qui a darti una mano..

A presto.

Ciao Cris8380,
tu non hai ragione ma di più, mi scuso per la forma e lo stile completamente fuori dai canoni mrwebmaster, la prossima volta cercherò di essere meno superficiale.

Sorry :)
 

elpirata

Utente Attivo
18 Mar 2009
264
7
18
Ciao Marino,
grazie per la risposta, ma la funzione DAYOFWEEK(date) recupera il numero di giorno della settimana esempio 1 - 2 - 3 - 4 - 5, a me servirebbe uno script php che effettui l'update di tutte le righe le db aggiungendo accanto all'attuale colonna data una colonna giorno .
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
puoi fare in diversi modi es se vuoi che nel campo sia scritto lunedì o martedì ...
metto i nomi dei campi e tabella a caso, poi devi adeguarli
PHP:
<?php
//campo con nome giorno letterale
function giorno($d){
    //la funzione che ti ho già postato
}
//dati di connessione
//p.s. usa mysqli, abbandona mysql
//chiamo il camppo giorno_settimana varchar(8)
$query=mysqli_query($conn,"SELECT * FROM tabella");
whyle($riga=mysqli_fetch_assoc($query)){
    $id=$riga['id_del_record'];
    $data=$riga['data'];//yyyy-mm-gg
    $gg_set=giorno($data);
    $q_upp=mysqli_query($conn,"UPDATE tabella SET giorno_settimana='$gg_set' WHERE id_record=$id");
}
?>
oppure come ha detto marino51 puoi usare la funzione DAYOFWEEK tenendo presente che tale funzione restituisce il numero del giorno della settimana e contando in modo diverso dall'attributo N di date()
1=> domenica .... 7=> sabato, quindi inserire nel campo che ho chiamato giorno_settimana il numero del giorno e poi visualizzare il letterale via php,
in tal caso il campo giorno_settimana deve essere settato a int(1)
forse, ma da provare e non sui dati originali, potrebbe funzionare questa query
PHP:
<?php
//dati di connessione
$query=mysqli_query($conn,"UPDATE tabella SET giorno_settimana=DAYOFWEEK(data)");
?>
poi quando li vai a leggere prima ti fai l'array con i giorni
PHP:
<?php
$gg_set=array('','domenica','lunedì','martedì','mercoledì','giovedì','venerdì','sabato');
$query=mysqli_query($conn,"SELECT * FROM tabella ORDER BY data");
whyle($riga=mysqli_fetch_assoc($query)){
    $data=$riga['data'];
    $n_gg=(int)$riga['giorno_settimana'];
    echo "$data ".$gg_set[$n_gg]."<br>";
}
?>
con il secondo metodo, con DAYOFWEEK, risparmi spazio e risorse del db
attento però: la query con DAYOFWEEK non l'ho provata e quindi potrebbe non funzionare o peggio rovinarti il db
 

marino51

Utente Attivo
28 Feb 2013
3.203
207
63
Lombardia
premesso che il giorno della settimana, sia come numero che come nome, è già disponibile nel db perché intrinseco alla data, è decisamente inutile cercare di inserire una colonna specifica nel db, solo per la fatica necessaria,
un modo per ottenere il risultato da una semplice query è il seguente,
Codice:
SELECT
miadata,
CASE DAYNAME(miadata)
WHEN 'Monday'    THEN 'Lunedì'
WHEN 'Tuesday'   THEN 'Martedì'
WHEN 'Wednesday' THEN 'Mercoledì'
WHEN 'Thursday'  THEN 'Giovedì'
WHEN 'Friday'    THEN 'Venedì'
WHEN 'Saturday'  THEN 'Sabato'
WHEN 'Sunday'    THEN 'Domenica'
END
la query estrae data e nome del giorno, il manuale è riportato qui
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayname
 
Discussioni simili
Autore Titolo Forum Risposte Data
I [PHP] Ricavare MAC address PHP 2
F ricavare nome utente e nome traccia da souncloud con php PHP 3
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10

Discussioni simili