Date in Mysql schreiben, wie?

Subwoover

Erfahrenes Mitglied
Wie schreibe ich das aktuelle Datum in eine Mysql Tabelle in der ich ein Feld als Datum definiert habe und eines als Zeit

Wie kann ich da nun das aktuelle Datum und die aktuelle Zeit ermittelen und richtig einfügen?
 
Also wenn das Feld in der Datenbank vom Typ DATE ist, mach ich es so:
PHP:
$mydate = strftime ("%Y-%m-%d", time ());
mysql_query ("INSERT INTO tabelle (datum) VALUES ('$mydate')");

Bei TIME:
PHP:
$mydate = strftime ("%H:%M:%S", time ());
mysql_query ("INSERT INTO tabelle (zeit) VALUES ('$mydate')");

Aber warum zwei Felder? Nimm doch DATETIME:
PHP:
$mydate = strftime ("%Y-%m-%d %H:%M:%S", time ());
mysql_query ("INSERT INTO tabelle (zeitdatum) VALUES ('$mydate')");
 
Hmmmmm funktioniert irgendwie nicht, er schreibt mir immer nur eine 0 nach der anderen hin!


Hier das Script:
PHP:
<html><head><title>Hi</title></head>
<body>
 <?

    if (isset($adden)) {
    $connect = mysql_connect("localhost","es","es11");
    mysql_select_db("es",$connect);
    $insert = "INSERT INTO es_news (titel,verfasser,veremail,bericht,datum) VALUES ('$titel','$verfasser','$veremail','$bericht','$mydate')";


if (mysql_query($insert)) {
echo "Regel eingetragen!";
}
} else {
?>
<font size="5">News-Hinzufügen</font><br>
<form action="<?php echo $PHP_SELF ?>" method="post" name="eintrag">
<input type="text" name="titel"> Titel der News<br>
<input type="text" name="verfasser"> Name<br>
<input type="text" name="veremail"> Email<br>
<textarea rows="5" cols="50" name="bericht"></textarea> Inhalt<br>
<br>
<input type="submit" name="adden" value="Speichern">&nbsp;&nbsp;
<input type="reset" value="Reset">
</form>
<br>
<br>
<br>
</body>
</html>
<?
    $mydate = strftime ("%Y-%m-%d %H:%M:%S", time() );
}
?>
 
Eeeeeemm kA dieses Forum ersetzt meine Datumszeile mit so komischen Code, naja jedenfalls die Datums-Zeile ist eh wie die von workaholic

[edit by Dunsti]
einfach die Smilies für diesen Beitrag deaktivieren, dann passiert das net ;)
[/edit]
 
also ich mach's immer so:

mit time() ermittelst Du in PHP den aktuellen UNIX-Timestamp, wo ja die Sekunden seit 1.1.1970 gezählt werden. Diese Zahl speichere ich in ein MySQL-Integer-Feld.
Wenn Du dann die Integer-Zahl wieder ausliest hast Du wieder den UNIX-Timestamp und kannst diesen mit date("d.m.Y",$variable); ins richtige Format bringen ;)


Dunsti
 
Jo emm hmmm nur steht dann bei mir wenn ichs wieder auf mein Format geändert habe: 1.1.1970

Kann das damit zusammenhängen, dass es bei mir so aussieht:

PHP:
    $datumzeit = date("d.m.Y",$showrow->datum);

    while ($showrow = mysql_fetch_object($returnnews)) {
    echo"
    <table border=1 width=100% bordercolor=#000000 cellpadding=0 cellspacing=0 style=border-collapse: collapse>
    <tr>
    <td class=title1 colspan=2 width=100%>$showrow->titel</td>
    </tr>
    <tr>
    <td class=news2 width=20%>Verfasst von: <a href=\"mailto:$showrow->veremail\">$showrow->verfasser</a></td>
    <td class=news2 width=80%>$datumzeit</td>
...
 
Zuletzt bearbeitet:
Dein Fehler oben liegt darin, dass die Variable $mydate erst ganz unten gebildet wird. Du machst das INSERT aber ganz oben.
 
Nein, das habe ich gerade ausprobiert, geht auch nicht! Ich habs jez so-> und es steht immer noch 1.1.1970


PHP:
if ($go == news) {
    $datumzeit = date("d.m.Y",$showrow->datum);
    $connect = mysql_connect("localhost","es","es11");
    mysql_select_db("es",$connect);
    $returnnews = mysql_query("SELECT titel,bericht,verfasser,veremail,datum FROM es_news ORDER BY id DESC LIMIT 0,10");

    while ($showrow = mysql_fetch_object($returnnews)) {
    echo"
    <table border=1 width=100% bordercolor=#000000 cellpadding=0 cellspacing=0 style=border-collapse: collapse>
    <tr>
    <td class=title1 colspan=2 width=100%>$showrow->titel</td>
    </tr>
    <tr>
    <td class=news2 width=20%>Verfasst von: <a href=\"mailto:$showrow->veremail\">$showrow->verfasser</a></td>
    <td class=news2 width=80%>$datumzeit</td>
    </tr>
    <td class=menue1 colspan=2 width=100%>($showrow->bericht</td>
    </tr>
    </table><br><br>";

    }
}
 
ähm .... ja .... folgendes Problem:

in Zeile 7 liest Du die Werte aus der Datenbank aus (mit mysql_fetch_object) aber in Zeile 2 ermittelst Du schon das Datum, und zu dem Zeitpunkt ist eben $showrow->datum noch Null (weil die Daten noch net ausgelesen sind)

setz mal das $datumzeit = date("d.m.Y",$showrow->datum); mit in die While-Schleife ;)


Dunsti
 
JO thx habs schon, habe ein Integer Feld in der DB belegt und dort die Unix Zeit eingetragen, dann beim auslesen wieder rück-formatiert, funktioniert, thx :)
 
Zurück