Datum per Form in DB formatiert?

markberg

Erfahrenes Mitglied
Hallo,
habe ein kleines Problem mit einem Formular. Ich habe drei Eingabefelder (tag,monat,jahr) und möchte das in meiner DB (spalte: datum) formatiert abspiechern, sprich im Format 2005-10-12! Habe es bereits mit

function mkTimestamp($datum)
{
$arr = explode('.',$datum);
return mktime(0,0,0,$arr['1'],$arr['0'],$arr['2']);
}

probiert... Klappt aber irgendwie nicht, laufend Fehler :confused: ... Kann mir jemand dabei weiterhelfen? Vielen Dank...

PHP:
$datumtag = $_REQUEST['datumtag']; 
$datummonat = $_REQUEST['datummonat']; 
$datumjahr = $_REQUEST['datumjahr']; 
$sql= "INSERT INTO `DB123456`.`tabelle` 
(`datumtag`, `datummonat`, `datumjahr` )
VALUES ('$datumtag', '$datummonat', '$datumjahr' )";
mysql_query( $sql ) or die( mysql_error() );
 
hey,
also bei nem Array werden die Nummern der Elemente nicht in Anführungszeichen angegeben...

Code:
function mkTimestamp($datum)
{
  $arr = explode('.',$datum);
  return mktime(0,0,0,$arr[1],$arr[0],$arr[2]);
}
 
Hi,
dazu erstmal vielen Dank. ich bekomme es aber irgendwie nicht hin!?
Kannst Du mir viell. kurz weiterhelfen. Ich habe ja nun drei Angaben (datumtag ...monat usw.) mit der Funktion mkTimestamp wandel ich das Datum doch um, oder!? Dann müsste es doch problemlos per Insert richtig einzufügen gehen... Sprich da erscheint dann yyyy-mm-tt!?
 
Hallo Leute
Also ich würde das Ganze sowieso auf Basis eines Timestamps aufziehen, dann kannst du immer noch das Datum den Tag oder die Uhrzeit errechnen bzw. ausgeben mit date() und du brauchst nur ein einziges Int(12) Feld um ihn zu speichern.
PHP:
$timestamp=mktime(0,0,0,$_REQUEST['datummonat'],$_REQUEST['datumtag'],$_REQUEST[datumjahr]);
$sql= "INSERT INTO `DB123456`.`tabelle` 
('$timestamp') 
VALUES ($timestamp)"; 
mysql_query( $sql ) or die( mysql_error() );
So oder so ähnlich dürfte es theoretisch funktionieren, hab es leider noch nicht ausprobiert. Aber wie schon gesagt, du musst noch ein Integer Feld mit der Eingabelänge 12 in die Datenbank einfügen, die drei anderen kannst du dir dann sparen. ;)
Falls irgendwas mit dem INSERT INTO nicht klappen sollte schau mal hier nach:
http://www.tutorials.de/tutorials218922.html hatte da nämlich vor kurzem ein Problem mit.
 
Zuletzt bearbeitet:
Also so funkts auch nicht, ich werde bald wahnsinnig... kann doch nicht so schwer sein oder!? Fehler:'unknown column 'timestamp' in 'field list' ?

PHP:
$timestamp=mktime(0,0,0,$_REQUEST['datummonat'],$_REQUEST['datumtag'],$_REQUEST['datumjahr']);
$sql= "INSERT INTO `DB123456`.`tabelle` 
(`timestamp`) 
VALUES ($timestamp)"; 
mysql_query( $sql ) or die( mysql_error() );
 
SO!

Habe es... hier die Lösung für alle Nachgucker:

PHP:
$datumtag = $_REQUEST['datumtag']; 
$datummonat = $_REQUEST['datummonat']; 
$datumjahr = $_REQUEST['datumjahr'];
$datum = sprintf("%d-%02d-%02d", $datumjahr, $datummonat, $datumtag);
$sql= "INSERT INTO `DB123456`.`tabelle` 
(`datum`)
VALUES ('$datum' )";

Danke an alle die hier so nett mitgedacht haben... :-)
 
So funktioniert es zwar vielleicht aber glaub mir wenn du eine hohe Kompatibilität erreichen willst und vielleicht auch mal Zeiten vergleichen musst z.B. beim Sortieren von Foreneinträgen nach Zeiten um nur einen von vielen Vorteilen zu nennen so kommst du um den Timestamp nicht herum --- er ist einfach universeller einsetzbar.

Die Fehlermeldung "...unknown column..." kommt vom INSERT Statement. Du hast warscheinlich keine Spalte mit dem Namen "timestamp" angelegt oder wenn doch probier mal die Syntax des INSERT Statements ein bisschen zu variieren. ;)
 
Zurück