Timestamp im Gästebuch

simonef

Mitglied
Hallo Leute,

weil ihr euch damit auskennt, und ich schön langsam GARNICHTS mehr verstehe...
MYSQL-Timestamp, PHP-Timestamp :confused:

Also: ich hab ein Gästebuch, ein kleines, da soll bei jedem Eintrag das Datum dabeistehen.

Ein Bißchen funktioniert es schon, aber mehr nicht.
PHP:
<?php
        // Datenbankverbindung aufbauen ....


	if ($Array[Bemerkung]){
		$Text=$Array[Bemerkung];
		$Text = ereg_replace("(<)", "kleiner",$Text);
		$Text = ereg_replace("(>)", "groesser",$Text);
		$Text = ereg_replace("(\r\n|\n|\r)", "<br>",$Text);

		$dbanfrage = "INSERT into guestbook (Name, Email , URL, Datum, Text) values ('$Array[Name]','$Array[Email]', '$Array[URL]',NOW(), '$Text')";
	mysql_db_query ("eishtmo_privat", $dbanfrage, $dbh);
		
	}
?>
<html>
<head>
<title>Privat</title>
<link rel="stylesheet" type="text/css" href="styles-p.css">

</head>
<body>
<table border=0 width=100% height=100%>
<tr>
<td bgcolor=#000099 width=15></td>
<td valign=top bgcolor=#000099 width=15>
<table border=0 width=180>
<tr><td height=100></td></tr>
<?php 
include "Inhalte/MMenu.txt";
?> 
</Table >
</td>
<td width=15></td>
<td valign=top>
<table border=0 width=100%>
<tr><td height=100>

<?php 
include "Inhalte/MMain.txt";
?> 
</td></tr>
<tr>
<td>
<center><font size=+1><span class="Ueberschrift">Gästebuch</span></font><br><br>
</center>
<br><br>
<table border=1 bordercolordark=yellow bordercolorlight=yellow cellspacing="0" cellpadding="10" width=100%>
<?php
$sql_befehl="SELECT * FROM `guestbook` order by Datum DESC";
$ergebnis=mysql_query($sql_befehl,$dbh); 

while ($satz=mysql_fetch_array($ergebnis)) { 
	echo "<tr><td rowspan=2 bgcolor=#000099 width=150 valign=top><center><span class='Normal'><br>";
	echo $satz['Name'];
	echo "</span></center></td>";
	echo "<td><span class='Ueberschrift'>Datum: </span>".date("m.d.Y", $satz['Datum'])."<br><span class='Ueberschrift'>Internetseite: </span><a href='".$satz['URL']."' target=blank>".$satz['URL']."</a><br><span class='Ueberschrift'>Email: </span>".$satz['Email']."</td></tr><tr><td>".$satz['Text']."</td>";
	echo "</tr>";
}?>
</table>
<br><br>
<span class="Ueberschrift">Neuer Eintrag:</span>
<form action="guestbook.php" method=post width=800><br>
<table border=0 width=100%><tr><td align=center valign=center>
<table border=0><tr><td valign=top>
Name:<br>
<input type=text name="Array[Name]" size= 50 maxlength=20>
</td><td valign=top>
Internetseite:<br>
<input type=text name="Array[URL]" size= 50>
<br>
Email:<br>
<input type=text name="Array[Email]" size= 50>
</td></tr>
<tr><td colspan=2>Text:<br>
<textarea cols="79" rows="7" name="Array[Bemerkung]"></textarea></td></tr></table>

<input type=submit name="SUBMIT" value="Eintragen"><br><br>
</form>
</td></tr>
</table>
</td></tr>
</tr></td>
</Table>
</td></tr>
</table>
</body>
</html>

Mein Problem: Der Server steht in Amerika und gibt mir eine andere Zeit, die ich jetzt irgendwann umrechnen muss. Aber da muss wieder irgendein Datum rauskommen, damit ich danach sortieren kann.

Und welchen Datentyp brauch ich dann in der SQL-DB?

Bitte helft mir beim entwirren :-)
danke

cu
simone
 
Hallo!

In Deinem INSERT-Statement setzt Du das Datum mittels der MySQL-Funktion NOW(), Du schreibst also die aktuelle Server-Zeit im MySQL-Timestamp-Format "YYYY-MM-DD HH:MM:SS" in die Tabelle. Wenn Du vorher was umrechnen willst, kannst Du die MySQL-Datums/Zeitberechnungs-Funktionen benutzen. Um beispielsweise 8 Stunden dazuzuzählen schreibst Du statt NOW():
Code:
DATE_ADD(NOW(), INTERVAL 8 HOUR)
Das ganze kannst Du natürlich stattdessen auch beim Auslesen machen, nur eben andersrum. Dadurch dass alle Berechnungen in MySQL stattfinden, kannst Du die Timestamp-Format-Problematik MySQL/PHP getrost vergessen. Siehe auch http://dev.mysql.com/doc/mysql/de/Date_and_time_functions.html

Wenn Deine Anwendung allerdings wirklich weltweit funktionieren soll, dann muss wohl JavaScript ins Spiel kommen, denn PHP und MySQL laufen ja nur auf dem Server und kennen die Zeitzone des Anwenders nicht.

Martin
 
Hallo Martin,

danke, jetzt geht´s.
Die Ausgabe hab ich halt wieder ändern müssen:
PHP:
	echo substr($timenow, 6, 2).".".substr($timenow, 4, 2).".".substr($timenow, 0, 4)." ".substr($timenow,8,2).":".substr($timenow,10,2);

Jetzt in der "Winterzeit" sind 7 Stunden, aber im Sommer? Da müssten´s dann 8 sein.
*seufz*
Das ändere ich, glaub ich, per Hand ;)

Was ich dann mit dem SQL-Timestamp für ein Problem hatte:
Jetzt sind ja alle schon vorhandenen Beiträge auf dem heutigen Datum, weil sich das beim bearbeiten automatisch aktualisiert. (Ich hatte zwischendurch mal ganz andere datentypen und da wurde das wohl mal nicht richtig konvertiert.)
Dafür hab ich nochmal kurz auf Datetime umgestellt, bearbeitet, und zurückgestellt :-)

cu
simone
 
Zurück