Kleineres Problem mit Zeit

Unicate

Erfahrenes Mitglied
Ich habe eine Tabelle in MySQL erstellt, welche einen UNIX TIMESTAMP speichert.
dazu habe ich in HTML ein Formular gebaut, welches mir die Zeit speichern soll

das mach ich wie folgt:
Bsp.:
Ausgangsstring: 4. August 2006
PHP:
$sql = "INSERT INTO ....
....
FROM_UNIXTIME(strtotime('4. August 2006'))
....";
Nun hab ich auch die korrekte Zeit gespeichert, aber wie bekomm ich die da wieder raus und zwar sinnvoll lesbar...
strftime funktioniert irgendwie nicht, da bekomm ich immer 1.1.1970 1:33 o.ä.


Irgendjemand nen Tip?
 
Du scheinst PHP- und MySQL-Funktionen zu vermischen. Denn während die MySQL-Funktionen als Zeichenkette in der Abfrage stehen müssen, da sie nur von MySQL interpretiert werden können, müssen die PHP-Funktionen als normaler Teil einer Anweisung notiert werden. In deinem Fall wäre das etwa:
PHP:
$sql = "INSERT INTO .... 
.... 
FROM_UNIXTIME(".strtotime('4. August 2006').") 
....";
 
Tschuldigung hatte mich verschrieben...
Der eigentliche code schaut so aus:

PHP:
$stamp = strtotime($_POST["day"]." ".$_POST["month"]." 2006");
$sql = "INSERT INTO mitfahrsuche" .
"(id, vname, nname, datum, vstadt, nstadt, email)" .
"VALUES" .
"(''," .
"'".addslashes(htmlspecialchars($_POST["vname"]))."', ".
"'".addslashes(htmlspecialchars($_POST["nname"]))."', ".
" FROM_UNIXTIME('".stamp."'), ".
"'".addslashes(htmlspecialchars($_POST["vstadt"]))."',".
"'".addslashes(htmlspecialchars($_POST["nstadt"]))."', ".
"'".addslashes(htmlspecialchars($_POST["email"]))."')";
 
vielleicht statt :

PHP:
$stamp = strtotime($_POST["day"]." ".$_POST["month"]." 2006");

so

PHP:
$stamp = strtotime($_POST["day"].". ".$_POST["month"]." 2006");
 
Ein kleiner Tipp: Die Daten sollten möglichst immer als Klartext und in ursprünglicher Form in die Datenbank geschrieben werden. Demnach sollte erst bei der Ausgabe die htmlspecialchars()-Funktion eingesetzt werden. Des weiteren empfehle ich die mysql_real_escape_string()-Funktion statt der addslashes()-Funktion einzusetzen.
PHP:
$sql = '
	INSERT INTO
	        `mitfahrsuche`
	  SET
	        `vname`  = "'.mysql_real_escape_string($_POST['vname']).'",
	        `nname`  = "'.mysql_real_escape_string($_POST['nname']).'",
	        `datum`  = "'.sprintf('%04u-%02u-%02u', 2006, intval($_POST['month']), intval($_POST['day'])).'",
	        `vstadt` = "'.mysql_real_escape_string($_POST['vstadt']).'",
	        `nstadt` = "'.mysql_real_escape_string($_POST['nstadt']).'",
	        `email`  = "'.mysql_real_escape_string($_POST['email']).'"
	';
 
@Gumbo:
Wenn ich so den TIMESTAMP eintrage bekomm ich nen Datum von "0000-00-00 00:00:00" in die DB
@Dimension:
Guter Vorschlag, funktioniert aber auch nicht... (bekomm -1 zurück, hab noch PHP4)

Warum wird mein TIMESTAMP, welcher eigentlich ein integer sein sollte so: "0000-00-00 00:00:00" gespeichert?
 
Zuletzt bearbeitet:
Nee, brauche Datum und Uhrzeit...
bei der Uhrzeit bin ich nur noch nicht...

Wie du siehst gehts um eine Mitfahrgelegenheitsskript
Da wär es doch ****** wenns keine Uhrzeit geben würde
 
Ok, es funktioniert so:
z.B.:
strtotime("4 August 2006 4:00); // ohne Punkt nach dem Tag!!

Wichtig ist nur, das die Monatsnamen in Englisch sind
Also December == Dezember

ansonsten kann man das bis auf die sekunde genau angeben

Danke an alle und ale die das noch lesen werden...
 
Zurück