Eine simple HTML-Datei
Zuerst müssen wir in einer HTML-Datei die Eingabe von Namen und Eintrag
per Formular vorsehen. Die Datei bennenen wir in weise Voraussicht
schonmal gaestebuch.php da wir beabsichtigen, später noch vor dem Formular die Gästebuch-Eintragungen auszugeben.
<html>
<body>
<table><!-- Hier kommt die Tabelle mit den bisherigen Einträgen rein -->
</table>
<form action="guestbook.php"><!-- Warum wir hier die eigene Datei angeben wird in Abschnitt 3 erklärt-->
Ihr Name:<input name="name"><br>
Ihr Eintrag:<textarea name="eintrag">
</textarea> <br>
<input type=submit><input type=reset>
</form>
</body>
</html>
Der Datenbank-Aufbau
Die Datenbank wird im wesentlichen dieselben Felder enthalten wie
der
Counter: Nämlich IP, Zeitpunkt und vorige Seite des Besuchers, zusätzlich jedoch noch Name und Eintrag des Absenders:
<html>
Starte Setup für Gästebuch....
<?php
$dbh = odbc_connect('testdb', 'aname', 'apwd', SQL_CUR_USE_ODBC);
echo "Connected to db $dbh<br>";
$query = "drop table guests";
$res = odbc_exec($dbh, $query);
$query = "create table guests (zeitpunkt int, ip char(15), refferer char(255), name char(50), eintrag long varchar)";
$res = odbc_exec($dbh, $query);
odbc_close_all();
?>
... beendet
</html>
Eintrag in die Datenbank
Der Eintrag in die Datenbank erfolgt mir den Zeilen
$dbh = odbc_connect('testdb', 'aname', 'apwd', SQL_CUR_USE_ODBC);
$now = time();
$ip = getenv("REMOTE_ADDR");
$ref = getenv("HTTP_REFERER");
$query = "insert into guests values ($now, '$ip', '$ref', '$name', '$eintrag')";
if ($eintrag!="")
{
echo "Eingetragen";
$res = odbc_exec($dbh, $query);
}
Der Grund, warum ODBC_EXEC nur Aufgerufen wird ist, falls überhaupt die Variable Eintrag angegeben ist, der, dass wir so dieselbe Datei für Ein- und Ausgabe verwenden können. Ruft man gaestebuch.php ohne Parameter auf, wird nur der Inhalt der Datenbank
angezeigt, trägt man einen Eintrag ein und wird geastebuch.php durch das Formular aufgerufen ist ja die Variable eintrag definiert-
der neue Eintrag wird durchgeführt und gleich angezeigt. So vermeidet man Programmierfehler und fehlende Refreshs des Browsers.
Ausgabe in der HTML-Datei
Diese Aufgabe erweist sich als gewöhnliche Ausgabe einer Datenbank. Zusammen mit ein paar Tags zur Tabellenformatierung sieht
das dann ungefähr so aus:
$query = "select * from guests";
$res = odbc_exec($dbh, $query);
while (odbc_fetch_row($res))
{
$thename=odbc_result($res,"name");
$theeintrag=odbc_result($res,"eintrag");
echo "<tr><td>$thename</td><td>$theeintrag</td></tr>";
}
Die Dateien in der Übersicht
<html>
Starte Setup für Gästebuch....
<?php
$dbh = odbc_connect('testdb', 'aname', 'apwd', SQL_CUR_USE_ODBC);
echo "Connected to db $dbh<br>";
$query = "drop table guests";
$res = odbc_exec($dbh, $query);
$query = "create table guests (zeitpunkt int, ip char(15), refferer char(255), name char(50), eintrag long varchar)";
$res = odbc_exec($dbh, $query);
odbc_close_all();
?>
... beendet
</html>
<html>
<body>
<table>
<?php
$dbh = odbc_connect('testdb', 'aname', 'apwd', SQL_CUR_USE_ODBC);
$now = time();
$ip = getenv("REMOTE_ADDR");
$ref = getenv("HTTP_REFERER");
$query = "insert into guests values ($now, '$ip', '$ref', '$name', '$eintrag')";
if ($eintrag!="")
{
echo "Eingetragen";
$res = odbc_exec($dbh, $query);
}
$query = "select * from guests";
$res = odbc_exec($dbh, $query);
while (odbc_fetch_row($res))
{
$thename=odbc_result($res,"name");
$theeintrag=odbc_result($res,"eintrag");
echo "<tr><td>$thename</td><td>$theeintrag</td></tr>";
}
odbc_close_all();
?>
</table>
<form action="guestbook.php">
Ihr Name:<input name="name"><br>
Ihr Eintrag:<textarea name="eintrag">
</textarea> <br>
<input type=submit><input type=reset>
</form>
</body>
</html>
ToDo's
Als to-do würde ich Ihnen empfehlen,