Perchè, inesrendo correttamente le date da un form e processandole con un mktime() mi restituisce sempre 00-00-0000?
Perchè, inesrendo correttamente le date da un form e processandole con un mktime() mi restituisce sempre 00-00-0000?
da una pagina mi arrivano le varibili $mese, $giorno, $anno
le gestisco con mktime(0,0,0,$mese,$giorno,$anno) per inserirle in un db
eppure quando eseguo una query di lettura sul db, mi restituisce 00-00-0000
come mai?
mktime() ritorna un timestamp unix. Se il tipo di dati nel database è TIMESTAMP non c'è problema, se invece è DATE o DATETIME dovresti usare uno di questi metodi:
[list=1][*]Convertire in PHP la data in modo che sia compatibile con DATE o DATETIME, tipo una stringa nel formato 'YYYYMMDDHHSS' (e quindi potresti evitare l'uso di mktime())[*]Usare FROM_UNIXTIME(...) nella query SQL, tipo INSERT INTO ... (...) VALUES (..., FROM_UNIXTIME($timestamp), ...)[/list=1]
ok, io ho DATE nel db, allora cosa devo fare, unire le tre variabili e aggiugere 0000 alla fine?Originariamente inviato da ntd
[list=1][*]Convertire in PHP la data in modo che sia compatibile con DATE o DATETIME, tipo una stringa nel formato 'YYYYMMDDHHSS' (e quindi potresti evitare l'uso di mktime())[/list=1]
Grazie
Quasi. DATE è 'YYYYMMDD' (non ha l'ora), quindi ti basta unire le variabili SENZA aggiungere 0000 alla fine. Occhio a rispettare il formato e a mettere gli zeri dove occorrono: 20071001 = 1 ottobre 2007 mentre 2007101 è una cagata. Se vuoi semplificare:Originariamente inviato da Roverandom
ok, io ho DATE nel db, allora cosa devo fare, unire le tre variabili e aggiugere 0000 alla fine?
Grazie
così non ti devi preoccupare di mettere lo 0 al mese e al giorno se sono 1 cifra (non l'ho provato ma "dovrebbe" funzionare).Codice PHP:
$valore_per_query = "$anno-$mese-$giorno";
veramente così non funziona, non è che forse interpreta i "-" come dei meno?
Forse basta mettere un punto tra le variabili?
Guarda che devi metterlo fra apici nella query:Originariamente inviato da Roverandom
veramente così non funziona, non è che forse interpreta i "-" come dei meno?
Forse basta mettere un punto tra le variabili?
altrimenti sì, ti esegue la sottrazione tra interi.codice:INSERT INTO ... (...) VALUES (..., '$valore_per_query', ...)
ho risolto con una soluzione intermedia:
-ho messo i punti
-ho messo gli apici
cmq il problema era a monte, il giorno fino al nove mi arrivava senza lo zero davanti, ho risolto correggendo a monte e adesso mi funziona divinamente!
Grazie mille!
Se il problema era questo ti conviene fare lo stesso per il mese, altrimenti a gennaio sarai di nuovo in braghe di tela.Originariamente inviato da Roverandom
cmq il problema era a monte, il giorno fino al nove mi arrivava senza lo zero davanti, ho risolto correggendo a monte e adesso mi funziona divinamente!
Grazie mille!
ovvio, ho corretto anche il mese!
Però il problema del giorno era diverso, perchè l'elenco veniva generato dal php, mentre il mese era html, quindi molto pù semplice da fissare
![]()