[php - mysql] problema con le date

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Scrivi risposta
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

[php - mysql] problema con le date

Messaggio da frest »

ciao a tutti,
ho un problema con la gestione delle date...
nel DB ho diverse tabelle con un campo "data" di tipo datetime.
I dati vengono inseriti attraverso delle query inserite negli script php, per inserire la data ho fatto così: (i codici sono solo di esempio non fate caso a nomi di variabili incongruenti)

Codice: Seleziona tutto

$data = time();

$q = "INSERT INTO tabella (data) VALUES ('$data')"; // query esempio
visualizzazione:

Codice: Seleziona tutto

while($r = mysql_fetch_array($qcomm))
          {
          $data = date("d/m/Y H:i",$r[data]);
          ......
          }
ma puntualmente la data visualizzata è
01/01/1970 01:00.
Ho provato anche a sostiture nella query la variabile $data, con la funzione 'NOW()'...ma stesso risultato...
questo delle date è un problema che mi segue da un pò ???

qualche suggerimento?
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php - mysql] problema con le date

Messaggio da Zoff »

E' perché time() restituisce un intero, in particolare i millisecondi che sono passati appunto dal 01/01/1970.
Quando fai l'insert essendo il tipo sbagliato viene salvato nel DB proprio quella data...

Per risolvere il problema devi usare il metodo date() di PHP ed indicare nel formato il formato delle date del DB.

ciao
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

Re: [php - mysql] problema con le date

Messaggio da frest »

dunque anzichè $data = time(), devo fare $data = date("d/m/Y H:i",time()); ?
è corretto?
Avatar utente
menelicte
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 596
Iscrizione: lunedì 4 giugno 2007, 0:04

Re: [php - mysql] problema con le date

Messaggio da menelicte »

prova a modificare il codice di visualizzazione:

Codice: Seleziona tutto

while($r = mysql_fetch_assoc($qcomm))
          {
          $data = date("d/m/Y H:i",$r['data']);
          ......
          }
comunque come dice Zoff, time() del PHP restituisce l'intero dei millisecondi, la funzione NOW() dell'SQL dovrebbe restituire la data in formato "aaaa-mm-gg hh:ii:ss"

EDIT: ma la colonna data nella tabella in che formato è?
Ultima modifica di menelicte il martedì 14 ottobre 2008, 20:17, modificato 1 volta in totale.
"Tentare è il primo passo verso il fallimento" Homer J.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php - mysql] problema con le date

Messaggio da Zoff »

menelicte ha scritto: EDIT: ma la colonna data nella tabella in che formato è?
Io davo per scontato che fosse in formato datetime :D
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

Re: [php - mysql] problema con le date

Messaggio da frest »

ovviamente è datetime  :) (come scritto nel primo post)

dunque come mi consigliate di agire? va bene la modifica che ho proposto io?
frest ha scritto: dunque anzichè $data = time(), devo fare $data = date("d/m/Y H:i",time()); ?
è corretto?
Avatar utente
menelicte
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 596
Iscrizione: lunedì 4 giugno 2007, 0:04

Re: [php - mysql] problema con le date

Messaggio da menelicte »

frest ha scritto: dunque anzichè $data = time(), devo fare $data = date("d/m/Y H:i",time()); ?
è corretto?
non so se cambia a seconda delle impostazioni locali ma il formato DATETIME dovrebbe accettare come input il formato "Y-m-d H:i:s".

Per cui sì:

Codice: Seleziona tutto

$data = date("Y-m-d H:i:s",time());
al posto di:

Codice: Seleziona tutto

$data = time();
nel codice di inserimento.
Ultima modifica di menelicte il martedì 14 ottobre 2008, 20:56, modificato 1 volta in totale.
"Tentare è il primo passo verso il fallimento" Homer J.
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

Re: [php - mysql] problema con le date

Messaggio da frest »

mmm ho provato ma sembra che non funzioni...non è cambiato niente rispetto a prima
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php - mysql] problema con le date

Messaggio da Zoff »

frest ha scritto: mmm ho provato ma sembra che non funzioni...non è cambiato niente rispetto a prima
prova a postare il codice completo allora...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

Re: [php - mysql] problema con le date

Messaggio da frest »

ho aggirato il problema...ho cambiato il tipo del campo data, da datetime ad int(11).

salvataggio:

Codice: Seleziona tutto


$data = time();
.....
$ins = "INSERT INTO commenti (autore, email, contenuto, data, id_news) VALUES ('$autore', '$email', '$commento', '$data', '$id_news')";
...
visualizzazione

Codice: Seleziona tutto

          while($r = mysql_fetch_array($qcomm))
          {
          $data = date("d/m/Y H:i:s",$r[data]);
          .....
          }
e effettivamente funziona, ora però spero funzioni anche l'ORDER BY data, visto che il campo data non è più di tipo datetime
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php - mysql] problema con le date

Messaggio da Zoff »

frest ha scritto: ho aggirato il problema...ho cambiato il tipo del campo data, da datetime ad int(11).

salvataggio:

Codice: Seleziona tutto


$data = time();
.....
$ins = "INSERT INTO commenti (autore, email, contenuto, data, id_news) VALUES ('$autore', '$email', '$commento', '$data', '$id_news')";
...
visualizzazione

Codice: Seleziona tutto

          while($r = mysql_fetch_array($qcomm))
          {
          $data = date("d/m/Y H:i:s",$r[data]);
          .....
          }
e effettivamente funziona, ora però spero funzioni anche l'ORDER BY data, visto che il campo data non è più di tipo datetime
Funzionerà anche quello però è semanticamente sbagliato...

Nel database memorizzi un numero non una data...
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
garak
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1649
Iscrizione: lunedì 13 giugno 2005, 13:37
Desktop: Gnome
Distribuzione: Ubuntu 24.04
Sesso: Maschile
Località: Roma
Contatti:

Re: [php - mysql] problema con le date

Messaggio da garak »

Zoff ha scritto: Funzionerà anche quello però è semanticamente sbagliato...
Nel database memorizzi un numero non una data...
Mi pare opinabile: lo Unix timestamp di fatto è un numero, quindi è assolutamente lecito impostare un campo data come intero. Per esempio phpBB fa così.
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: [php - mysql] problema con le date

Messaggio da Zoff »

garak ha scritto:
Zoff ha scritto: Funzionerà anche quello però è semanticamente sbagliato...
Nel database memorizzi un numero non una data...
Mi pare opinabile: lo Unix timestamp di fatto è un numero, quindi è assolutamente lecito impostare un campo data come intero. Per esempio phpBB fa così.
Beh il mio era un parere, e come dici tu è opinabile...
Il fatto è che quando hai a disposizioni gli strumenti per "astrarre" e lavorare a livello più alto, perché non farlo?
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
Avatar utente
frest
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 533
Iscrizione: lunedì 30 giugno 2008, 22:10

Re: [php - mysql] problema con le date

Messaggio da frest »

Zoff ha scritto:
garak ha scritto:
Zoff ha scritto: Funzionerà anche quello però è semanticamente sbagliato...
Nel database memorizzi un numero non una data...
Mi pare opinabile: lo Unix timestamp di fatto è un numero, quindi è assolutamente lecito impostare un campo data come intero. Per esempio phpBB fa così.
Beh il mio era un parere, e come dici tu è opinabile...
Il fatto è che quando hai a disposizioni gli strumenti per "astrarre" e lavorare a livello più alto, perché non farlo?
be io ci ho provato, infatti inizialmente il tipo del campo era datetime...però non funzionava  >:(
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti