[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
38
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.042
149
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.042
149
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.042
149
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.041
192
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
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
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1
C Dopo chiusura del tag php la stringa html va a capo PHP 1
E Transaction php PHP 11
B ciclare file xml con PHP PHP 1
L Estrazione dati php Database 6
A Aiuto per pagina php PHP 0
E Php select option e ajax PHP 23
I Aiuto php Dependent Lookup PHP 0
T arretramento versione PHP... PHP 3
D problema php mysql PHP 1
D problema php mysql PHP 1
E Barra di avanzamento codice PHP PHP 4
G creazione menu a tendina e invio a pagina php PHP 1
A inserire variabile php colore in div html PHP 2
Z Video protetto con PHP PHP 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
I Eecuzione di javascript in ciclo foreach php. PHP 7

Discussioni simili