Newsgroup: it.comp.www.php
Titolo: Inserire date in un campo data

Ciao a tutti!
Scusatemi, ma ho qualche serio problema quando devo inserire una data in un
campo (appunto) di tipo data.
C'è qualche accorgimento che bisogna utilizzare?
Ho iniziato da poco, e probabilmente sbaglio a impostare la tabella con
PhpMyAdmin...
Se potreste farmi un esempio (anche veloce) ve ne sarei molto grato.
Grazie.



Formato 00-00-0000 --> sbagliato
Formato 0000-00-00 --> giusto
In genere è questo l'errore più comune
L.C.
^^^


Innanzitutto grazie per la risposta.
Io uso il formato "giusto", perň quando vado a fare la query di inserimento
mi ritrovo un bel 0000-00-00, al posto della data che dovrei inserire.
Potreste farmi un sempio di query?
Forse dovrei formattarla in qualche modo?
La mia query č:
INSERT INTO tbl_sondaggio ('rivista', 'data_inserimento') VALUES
($id_rivista, $miadata);
...correggetemi se sbaglio... :)



Togli gli apici singoli dai nomi dei campi e mettili sulle variabili.
L.C.
^^^


Ho provato, ma il risultato non cambia! :(
Ma la data va inserita come stringa (cioč tra singoli apici), o come numero
(senza apici)?



Ti dico come faccio io (mi sembra una soluzione abbastanza pratica e
preserva da eventuali errori di battitura), tu adatta il codice
secondo le tue esigenze.
Scrivi tre funzioni per rappresentare giorno, mese e anno con tre
<select> distinti.
function day($name)
	{
	echo "<select name=\"$name\">";
	echo "<option>-</option>";
	echo "<option>01</option>";
	[...]
	echo "<option>31</option>";
	echo "</select>";
	}
function month($name)
	{
	echo "&nbsp;&nbsp;";
	echo "<select name=\"$name\">";
	echo "<option>-</option>";
	echo "<option>01</option>";
	[...]
	echo "<option>12</option>";
	echo "</select>";
	}
function year($name)
	{
	echo "&nbsp;&nbsp;";
	echo "<select name=\"$name\">";
	echo "<option>-</option>";
	echo "<option>2003</option>";
	[...]
	echo "<option>2010</option>";
	echo "</select>";
	}
Nel codice chiami le funzioni assegnando un nome ai <select>:
day("d_carico");
month("m_carico");
year("y_carico");
Nella pagina successiva (quella attivata dal <submit> che effettua
materialmente l'inserimento) unisci le tre variabili in un formato
data digeribile da mysql:
$data_carico = $y_carico. "-" . $m_carico . "-" . $d_carico;
dopo di che nel db inserisci la nuova variabile generata dall'unione
delle tre precedenti:
$sql = "insert into spedizioni(data_carico) values('$data_carico')";
$query = mysql_query($sql);
Ovviamente le funzioni sono riutilizzabili a piacimento, basta
cambiare nome ai tre <select> che andranno a costituire la variabile
finale.
L.C.
^^^

 secondo le tue esigenze.
Grazie mille per l'aiuto, ora mi segno il tutto e poi provo con comodo a
casa (ora sto facendo lo stage e non mi sembra il caso...)
GRAZIE!!! :)


AH! Scusami, ma ho appena notato un particolare che mi era sfuggito...
Usi come separatore per la data il trattino?
Ma è valido?


Devi usare il trattino! prima non lo usavi???
ecco l'errore!


AAaahh!!!
Ecco svelato l'arcano!
Era il trattino malefico!!! :)
Meno male che me ne sono accorto, altrimenti chissà ancora quanto avrei
sklerato...!
Grazie mille a tutti quanti!
Siete mitici!

 posted this:


Puoi usare -./: come separatori, al limite anche niente.
Quindi:
 INSERT INTO tbl (data) VALUES('20030625');
 INSERT INTO tbl (data) VALUES('2003.06.25');
 INSERT INTO tbl (data) VALUES('2003-06-25');
 INSERT INTO tbl (data) VALUES('2003/06/25');
 e anche questo va:
 INSERT INTO tbl (data) VALUES('2003/6/25');
 ma non: 
 INSERT INTO tbl (data) VALUES('2003 6 25');
 
 importante  anno, mese, giorno (e anno da 1000(!) fino 9999)

  importante  anno, mese, giorno (e anno da 1000(!) fino 9999)
OK!!!
Forse forse raggiungiamo un accordo... ;)
Adesso toglietemi l'ultima curiosità/necessità...
Ovviamente in PhpMyAdmin dichiaro il campo come DATA (e fin quà penso che
non ci piova)...ma che lunghezza gli assegno?
    8 caratteri se non uso separatori e 10 se li uso?
...o cos'altro?

     8 caratteri se non uso separatori e 10 se li uso?
Non dipende dai separatori ma dal formato interno con il quale i dati
vengono salvati in mysql; quindi puoi usare
4 (solo anno)
6 (anno mese)
8 (anno mese giorno) 
e per datetime (o anche timestamp):
12 (+ora minuti)
14 (+ora minuti secondi)

 posted this:






Per togliersi qualsiasi dubbio:
 
http://www.mysql.com/doc/en/DATETIME.html
 
 
(solo in inglese, per chi mastica meglio il francese:
http://www.mysql.com/doc/fr/DATETIME.html