PDA

View Full Version : [PHP] Inserire una data in un database


DrZoidberg
29-08-2008, 15:53
Salve a tutti,
devo inserire una data in un database MySql ma ho un dubbio sulla compatibilità dei tipi.
Il campo del database è dichiarato di tipo DATE....mentre nel mio file php ho 3 variabili...una contenente il mese in formato stringa...e anno e giorno in interi !

Come posso convertire le mie 3 variabili del file php in un'unica variabile compatibile con il tipo DATE di MySql ??

Esiste qlc funzione apposta...o devo cambiare qualcosa??

Grazie

IAmZak
29-08-2008, 16:38
a parer mio devi cambiare approccio, poichè il campo date accetta cose come aaaa-mm-gg in numeri, devi passare da php una variabile $data=20081206 e dopo nella insert gli dai
insert into (..............) values (data='$data',.............)

il tuo problema è che avendo il mese in lettere devi convertirlo in numero, e qua o usi un case o fai degli if concatenati.
poi devi unire tre cose in una variabile sola, e qua boh.... è questa la parte sbatti.


non puoi cambiare approccio????
la data (sia anno che mese che giorno) è un inserimento via sito da un utente, o ce l'hai come variabile e basta?

matteo micanti
29-08-2008, 16:58
Ciao.

Ma i nomi dei mesi sono memorizzati come "gennaio", "febbraio", ...?
Perchè se è così potresti usare la funzione strptime() (http://it2.php.net/manual/it/function.strptime.php) per trasformare i mesi in lettere nei corrispondenti numeri:


setlocale (LC_TIME, "it_IT");
$arr = strptime('agosto', '%B');
echo $arr['tm_mon'] + 1; // stampa '8'


Il valore di $arr['tm_mon'] è incrementato di uno perchè i numeri dei mesi ritornati partono da 0 (gennaio è 0).

Per l'inserimento della data in mySQL ti basta concatenare il valore numerico del mese trovato con il giorno e l'anno nel formato DATA di mySQL:

AAAA-MM-GG

Ciao!

DrZoidberg
29-08-2008, 17:06
la data viene inserita dall'utente attraverso una form.
ho convertito il mese in una variabile intera....ora ho tutte e 3 le variabili di tipo intero.
Le ho concatenate in questo modo

$data = $anno.$mese.$giorno ;

in modo che ho il formato della data del tipo 20080829....ma quando vado ad inserirle nel mio DB....nn me la inserisce!!!!! Nel campo date compare il valore di default 0000-00-00!

Ho provato anche a metterci i trattini prima di inserirla....ma non va uguale!!!

matteo micanti
29-08-2008, 17:19
Mmhhh, ho provato anche io e funziona...
Sei sicuro che la query vada a buon fine (quindi che non ci siano altri errori)?
Potresti postarne il testo?
Hai provato:
$data = $anno.'-'.$mese.'-'.$giorno;?

Stampa anche $data per vedere se il suo valore è corretto.

Ciao!

DrZoidberg
29-08-2008, 17:46
ho risolto!!!!:)
il problema stava nel fatto che la variabile $data la inizializzavo in un blocco di codice e nel blocco in cui facevo la query non riconosceva l'inizializzazione precedente!!! :p

grazie a tutti cmq