2009-04-10 3 views
0

Wenn Sie 5 Dropdown-Felder für die Datumsauswahl (Y, m, d, H, i) haben, wie fügen Sie das ausgewählte Datum und die Uhrzeit in eine einzelne Spalte einer mySQL-Tabelle als Datetime mit PHP5 ein?Wie Sie Daten, die aus Dropdown-Listen ausgewählt wurden, in mySQL-Tabelle mit php einfügen?

Ich weiß, sie müssen in einem String kombiniert werden wie zum Beispiel:

$DateTime="$Year-$Month-$Day $Hour:$Minute:00"; 

und vielleicht dann verwenden strtotime:

$Date=date('Y-m-d H:i:s', strtotime($DateTime)) ; 

aber wo erkläre ich die Variablen und wie baue ich es in einer Abfrage wie:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "details")) { 

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date) 
VALUES (%s, %s, $s)", 

         GetSQLValueString($_POST['Location1'], "text"), 
         GetSQLValueString($_POST['Location2'], "text"), 
         GetSQLValueString($_POST[' ???? '], "date")); 

Antwort

0

Vielen Dank an alle, die versucht zu helfen - die Antwort war viel weniger kompliziert nur notwendig, um die POST-Variablen zu deklarieren (blonde Moment denke ich, lol!):

$ _POST [ ‚startdate‘] ​​= "$ Jahr- $ Monat- $ Tag $ Stunde: $ Minute: 00";

Keine Zeitkonvertierungen erforderlich, da es bereits im Mysql-Format ist (YEY!)

1

Sie auch in die mktime() Funktion aussehen könnte: http://ca.php.net/mktime

Sie würden dann müssen nur Ihre Datum Variable deklarieren, wie:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']); 

$location1 = mysql_real_escape_string($_POST['Location1']; 
$location2 = mysql_real_escape_string($_POST['Location2']; 

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', $date)"; 

mysql_query($insertSQL); 

EDIT:

Oder mit dem sprintf Format Sie verwenden:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']); 

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date) 
    VALUES (%s, %s, $s)", 

          GetSQLValueString($_POST['Location1'], "text"), 
          GetSQLValueString($_POST['Location2'], "text"), 
          GetSQLValueString($date, "date")); 

I Ich habe die GetSQLValueString-Funktion vorher noch nie benutzt, daher kann ich nur annehmen, dass es die richtige Art ist, sie zu benutzen.

0

Erstellen Sie eine Dienstprogrammfunktion, die zwischen dem "Anzeigemodus" und dem MySQL-Modus konvertiert, ti wird in Zukunft in mehreren anderen Projekten nützlich sein.

Date - ein String zurück, formatierte entsprechend den vorgegebenen Format-String

MkTime - Holen Sie sich einen Unix-Zeitstempel für ein Datum

Strtotime - Analysiert in englischen Textdatetime Beschreibung in einen Unix-Zeitstempel

0

MySQL bietet eine Funktion, um dies für Sie einfach zu machen. FROM_UNIXTIME(). Ich würde mktime() verwenden, um Ihr Datum zu einem Zeitstempel zu bekommen, da es Overhead ist viel weniger als Strtodate, da Sie die Datum-Teile kennen, gibt es keine Notwendigkeit, es als Zeichenfolge zu analysieren.

Das folgende ist der Straight-Forward-Ansatz, den ich denken kann:

$date = mktime($_POST['H'], $_POST['i'], 0, $_POST['m'], $_POST['d'], $_POST['Y']); 

$location1 = mysql_real_escape_string($_POST['Location1']; 
$location2 = mysql_real_escape_string($_POST['Location2']; 

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', FROM_UNIXTIME($date))"; 

Ich gehe davon aus, dass GetSQLValueString die benutzerdefinierte Funktion Dreamweaver ist (ich habe davon nur gehört). Ich bin sicher, dass Sie dies in Ihre Implementierung übernehmen können.

+0

Wenn MySQL, Daten und Zeit immer die gleiche Reihenfolge folgen - größte Einheit zuerst, gefolgt von der nächstgrößeren, bis auf die kleinste (dh: Jahr, Monat, Datum, Stunde, Minuten, Sekunden) warum mktime verwenden würde mir ein falsches Format geben, dh (s, i, H, m, d, Y) ??? * confused * – Brainache

+0

Grundsätzlich ist das Datum/Uhrzeit-Feld wie beschrieben, die Funktion mktime gibt jedoch einen UNIX-Zeitstempel zurück und ist daher portabler. Die FROM_UNIXTIME-Funktion nimmt ein Timestamp-Argument und konvertiert es in das Datetime-Format, sodass Sie dies nicht tun müssen. –

Verwandte Themen