Newsgroup: it.comp.www.php
Titolo: TimeStamp sempre a 00000000000000

Ciao a tutti !!!
prendo queste informazioni tramite post
$iniziogiorno = $_POST['iniziogiorno'];
$iniziomese = $_POST['iniziomese'];
$inizioanno = $_POST['inizioanno'];
$finegiorno = $_POST['finegiorno'];
$finemese = $_POST['finemese'];
$fineanno = $_POST['fineanno'];
valorizzo le 2 variabili...
$datainizio = mktime("0", "0", "0", $iniziomese, $iniziogiorno,
$inizioanno);
$datafine   = mktime("0", "0", "0", $iniziomese, $iniziogiorno,
$inizioanno);
e inserisco i dati nel db:
$sql = "INSERT INTO $db_table
(titolo,descrizione,luogo,email,internet,datainizio,datafine,immagine)
VALUES ('" . $titolo ."' , '" . $descrizione ."', '" . $luogo ."', '" .
$email ."', '" . $internet  ."',  '" . $datainizio  ."',  '" . $datafine
."', '" . $immagine ."');";
Tutto funziona correttamente ma... i valori del timestamp è sempre
00000000000000 :(
Come mai? dove ho sbagliato?

 $datafine ."', '" . $immagine ."');";
Il formato timestamp di Unix (quello usato dal PHP) e' diverso da
quello di MySQL (
http://dev.mysql.com/doc/mysql/en/DATETIME.html
)
A seconda del formato di timestamp utilizzato, dovresti usare la
funzione PHP date () per formattarlo coerentemente.
Per esempio, personalmente utilizzo queste costanti:
per DATETIME di MySQL ('YYYY-MM-DD HH:MM:SS'):
define ("DB_MYSQL_DATETIME", "Y-m-d H:i:s");
oppure ('YY-MM-DD HH:MM:SS' )
define ("DB_MYSQL_DATETIME_A", "y-m-d H:i:s");
per TIMESTAMP di MySQL ('YYYYMMDDHHMMSS'):
define ("DB_MYSQL_TIMESTAMP", "YmdHis");
Vedi 
http://www.php.net/date
 per il significato di YmdHis etc.
-- 
I am what I am, I do what I can
L'uomo, conscio di sbagliare, persevera.

 funzione PHP date () per formattarlo coerentemente.
che formato uso in che senso?
Raccolgo le info della data:
$iniziogiorno = 17
$iniziomese = 09
$inizioanno = 2004
e poi li devo "incollare" prima di avere il timestamp della data.
$datainizio = mktime("0", "0", "0", $iniziomese, $iniziogiorno,
$inizioanno);
ma prima di fare questo... non ho capito cosa fare con il datetime e
timestamp :(
basta scrivere:
define ("DB_MYSQL_DATETIME", "Y-m-d H:i:s");
define ("DB_MYSQL_TIMESTAMP", "YmdHis");
e poi scrivere:
$datainizio = mktime("0", "0", "0", $iniziomese, $iniziogiorno,
$inizioanno);
???? scusa, ma è la prima volta che mi capita...
può sembrare banale ma...
...non lo è :(
Ti ringrazio cmq per il tuo tempo !!!!
Grazie !!
Riccardo.


 che formato uso in che senso?
define ("DB_MYSQL_DATETIME", "Y-m-d H:i:s");
define ("DB_MYSQL_TIMESTAMP", "YmdHis");
$iniziogiorno = 17
$iniziomese = 09
$inizioanno = 2004
$datainizio = mktime ("0", "0", "0", $iniziomese, $iniziogiorno,
$inizioanno);
$timestampinizio_mysql = date (DB_MYSQL_TIMESTAMP, $datainizio);
Poi utilizzi $timestampinizio_mysql come una stringa nella tua query.


Scusa se...
il risultato per la data 17/09/2004 in timestamp è 20040917000000
E' corretto?
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:FEy2d.7516$2T6.2...@twister1.libero.it...


 E' corretto?
Si, e' esattamente un TIMESTAMP di MySQL correttamente formattato.
Se vuoi utilizzare DATETIME invece di TIMESTAMP utilizza:
$datetime_mysql = date ("Y-m-d H:i:s", $datainizio);
se vuoi utilizzare DATE di MySQL utilizza:
$datetime_mysql = date ("Y-m-d", $datainizio);
P.s.
Please 
http://wiki.news.nic.it/QuotarBene


 $datetime_mysql = date ("Y-m-d", $datainizio);
scusami, che differenza c'è?
danno lo stesso risultato...
è tipo il "print" ed "echo"

 h tipo il "print" ed "echo"
Sono formati diversi:
<?php 
$datainizio = time ();
print (date ("Y-m-d", $datainizio) . "<br />");
print (date ("Y-m-d H:i:s", $datainizio) . "<br />");
?>


Ok capito! ^__^
Ehm...
ora che ho la data, e riesco pure a formattarla per i "comuni mortali"...
come faccio a fare una ricerca per data:
es:
cerca
da: <select giorno><select mese><select anno>
a: <select giorno><select mese><select anno>
come al solito mi servono solo la "linee guida"...
per il resto, cerco di farcela da solo...
ciao !!!
Riccardo.
"Setec Astronomy" <setec@_NO_NOSPAM_freemail.it> ha scritto nel messaggio
news:p%y2d.7560$2T6.2...@twister1.libero.it...


 per il resto, cerco di farcela da solo...
Puoi utilizzare il costrutto SQL BETWEEN oppure >= e <=.
Fatti un piccolo schema per capire come gestire i range di data inizio
e fine rispetto alla data inizio e fine degli eventi salvati nel
database.
Please.
http://wiki.news.nic.it/QuotarBene


> Puoi utilizzare il costrutto SQL BETWEEN oppure >= e <=.
Fatto, e dovrebbe essere corretto. (I Hope)
$query =
"SELECT * FROM $db_table WHERE
((datainizio <= NOW()) AND (datafine >= NOW())) ORDER BY datainizio";
In questo modo, se NOW() è presente nel range di date,
viene visualizzato correttamente.
Dovrei modificare/aggiungere nello script la condizione che se non trova
nulla...
quindi il risultato della query è FALSE (o zero... non l'ho ancora capito),
una funzione che faccia nuovamente una query avente come risultato il
successivi 3 record.
Meglio ancora se, invece dei successivi 3 record, il risultato sia:
tutti i record che abbiano la stessa e "successivo now()" incrementato
(datainizio <= now <= datafine) in comune.
es:
now() = 19/09/2004
se non c'è nessun record con questa data, il risultato non è "ZERO"
ma è l'eleco di tutti i record successivi che abbiano
(datainizio <= now incrementato <= datafine) in comune.
Spero di essermi fatto capire :(