Datum von php an mysql übergeben?

T

ThaHammer

Aktives Mitglied
Thread Starter
Dabei seit
01.06.2004
Beiträge
3.303
Reaktionspunkte
13
Habe versucht mittels php das Datum an mysql zu übergeben, aber irgendwo ist da der Wurm drin.

Code:
$datum = date("d.M.Y");

$sql = "INSERT INTO table (name, email, url, inhalt, datum) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[url]', '$_POST[inhalt]', '$datum');";

Leider funktioniert das so nicht, hat irgend jemand ne Idee wie das geht?
Leider habe ich die Tage kaum zeit selber gross zu suchen, müsste es aber dringenst in mein Gästebuch einbauen.
 
es handelt sich um ein datetime feld?

dann benutze in mysql einfach NOW()

$sql = "INSERT INTO table (name, email, url, inhalt, datum) VALUES ('$_POST[name]', '$_POST', '$_POST[url]', '$_POST[inhalt]', NOW());";

edit:

btw. du programmierst etwas unsauber, richtig wäre:
$_POST["name"] anstatt $_POST[name]

weiterhin solltest du dich nicht immer auf magic_quotes verlassen :), das kann auf manchen servern abgeschaltet sein.
 
Was is den datum in der db für nen typ, wennns nen einfacher string is sollts scho gehn. Was kommt für ne Fehlermeldung?
 
Der Typ eines Datums in einer mySQL DB ist u. a. "date". Kann numerische Werte oder Zeichenketten aufnehmen.

2nd
 
Pinacolada schrieb:
es handelt sich um ein datetime feld?

dann benutze in mysql einfach NOW()

$sql = "INSERT INTO table (name, email, url, inhalt, datum) VALUES ('$_POST[name]', '$_POST', '$_POST[url]', '$_POST[inhalt]', NOW());";

edit:

btw. du programmierst etwas unsauber, richtig wäre:
$_POST["name"] anstatt $_POST[name]

weiterhin solltest du dich nicht immer auf magic_quotes verlassen :), das kann auf manchen servern abgeschaltet sein.[/QUOTE]

Danke für den Tip. An das dachte ich gar nicht mehr, ist schon über 1,5 Jahre her das ich das letztemal MYSQL hatte. Ich habe ein Datumsfeld in mysql gemacht, das spuckt mir 0000-00-00 aus. Einen Fehler bekomme ich eigentlich nicht, nur die Nullnummer. :)
 
Now mag er nicht, dann kommt ein Fehler!
 
Denke es liegt an mysql selber. Wahrscheinlich habe ich das Feld Datum falsch angelegt?

Code:
ALTER TABLE `table` ADD `datum` DATE NOT NULL ;

hatte das Datum nachträglich hinzugefügt, weil ich es dann doch brauchte!
 
Nein es liegt nicht an MySQL. Du erstellst ein Datum im Format 'dd.mm.yyyy' und MySQL erwartet ein Datum im Format 'yyyy-mm-dd'. Du solltest Deine date()-Funktion auf
Code:
date('y-m-d')
ändern. Ansonsten (wie schon gesagt) einfach die MySQL-Funktion NOW() nutzen, die eigentlich überall gehen sollte. Vielleichst postest Du mal Deinen Query. Er sollte auf jeden Fall OHNE Anführungszeichen beim NOW() gehen, also:
Code:
$query = "INSERT INTO table SET field1='$field1', date=NOW()";

Ach und Du solltest übrigens mit SET arbeiten bei den Variablen. Dann funktioniert Dein Query nämlich auch später noch, wenn die Tabelle mal erweitert werden sollte.
 
master_p schrieb:
Nein es liegt nicht an MySQL. Du erstellst ein Datum im Format 'dd.mm.yyyy' und MySQL erwartet ein Datum im Format 'yyyy-mm-dd'. Du solltest Deine date()-Funktion auf
Code:
date('y-m-d')
ändern. Ansonsten (wie schon gesagt) einfach die MySQL-Funktion NOW() nutzen, die eigentlich überall gehen sollte. Vielleichst postest Du mal Deinen Query. Er sollte auf jeden Fall OHNE Anführungszeichen beim NOW() gehen, also:
Code:
$query = "INSERT INTO table SET field1='$field1', date=NOW()";

Ach und Du solltest übrigens mit SET arbeiten bei den Variablen. Dann funktioniert Dein Query nämlich auch später noch, wenn die Tabelle mal erweitert werden sollte.

Code:
$sql = "INSERT INTO table (name, email, url, inhalt, datum) VALUES ('$_POST[name]', '$_POST[email]', '$_POST[url]', '$_POST[inhalt]', NOW());";

Der Query den ich ausprobiert hatte. Die anderen Sachen werde ich gleich mal ausprobieren! Danke schonmal.:)
 
Es lag nur am Date (y.m.d), das war alles! Jetzt geht es! Danke für euere Hilfe!
 
Bei Deinem Query ist auch das ";" hinter dem NOW() falsch. Das beendet ja den Query. Kein Wunder, dass MySQL das nicht akzeptiert. Mach das einfach mal weg.

Ich würde das Datum trotzdem von MySQL berechnen lassen. MySQL ist einfach schneller bei solchen Berechnungen als PHP. Und das ist ja doppelte Arbeit zuerst das Datum herauszufinden und dann das ganze nochmal von MySQL verarbeiten zu lassen, anstatt es gleich von MySQL ohne Fehlerbehandlung in die DB zu schreiben.
 
und ich finde, es macht mehr Sinn, ein Datum in Form eines timestamps abzulegen... Das ist viel flexibler :)

also statt

2006-07-30 oder 30.07.2006

einfach

12345678901 oder ähnlich ;)

daraus lassen sich alle möglichen Arten von Dati ableiten :)
 
Generell würde ich auch eher ein Feld mit kompletten Informationen nehmen (ich nehme immer gern 'datetime', weil man dann schneller mal in der Datenbank einen gewünschten Eintrag findet). Aber manchmal braucht man einfach nur das Datum und keine Uhrzeit.

Achso nochmal als Tipp. Wenn man timestamp oder datetime nutzt, muss man die Berechnung des Timestamps oder des Datums ohne Uhrzeit nicht von PHP machen lassen. Das geht (deutlich schneller) auch so:
Code:
$query = "SELECT DATE_FORMAT(field_datetime, '%d.%m.%Y') datum FROM tabelle WHERE field_id='xyz'";
$res = mysql_query($query);
$row = mysql_fetch_array($res);

print 'Datum: '.$row[datum];
 
OK, Danke für den Tip!
 
Zurück
Oben Unten