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
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
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.