Als erstes erstellen wir mal die Tabelle in unserer Datenbank.
| Feldname |
Feldtyp |
Beschreibung |
| id |
int(11) mit auto_increment |
Integerfeld, welches den primären Schlüssel (eindeutiger Wert) enthält |
| name |
varchar(100) |
Textfeld (100 Zeichen) für den Namen des Besuchers |
| datum |
datetime |
Datumsfeld für das Eintragsdatum |
| nachricht |
text |
Textfeld für die Nachricht des Besuchers/Text des Gästebucheintrags |
| email |
varchar(100) |
Textfeld (100 Zeichen) für die E-Mail-Adresse des Besuchers |
| website |
varchar(200) |
Textfeld (200 Zeichen) für die Website-Adresse des Besuchers
Nicht jeder hat eine eigene Domain, daher mal lieber bis zu 200 Zeichen. |
| kommentar |
text |
Textfeld für einen Kommentar des Webmasters |
| ip |
varchar(15) |
Textfeld (15 Zeichen) für die IP-Adresse des Besuchers |
| sichtbar |
set(‘ja’,'nein’) |
“Schalter”, um einen Eintrag anzuzeigen (“ja”) oder zu sperren (“nein”) |
Hier ist der SQL-Code zur Erzeugung der Tabelle.
CREATE TABLE `gaestebuch` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`name` VARCHAR( 100 ) NOT NULL ,
`datum` DATETIME NOT NULL ,
`nachricht` TEXT NOT NULL ,
`email` VARCHAR( 100 ) ,
`website` VARCHAR( 200 ) ,
`kommentar` TEXT,
`ip` VARCHAR( 15 ) ,
`sichtbar` SET( 'ja', 'nein' ) DEFAULT 'ja' NOT NULL ,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;
Nachdem die Struktur nun fertig ist, werde ich jetzt ein paar Beispiel-Einträge erzeugen. Dazu verwende ich natürlich die Texte von Lorem Ipsum.
INSERT INTO `gaestebuch` ( `id` , `name` , `datum` , `nachricht` , `email` , `website` , `kommentar` , `ip` , `sichtbar` )
VALUES (
'', 'Lorem Ipsum', '2006-03-05 17:01:00', 'Lorem ipsum dolor...', 'lorem@mailbeispiel.com', NULL , NULL , '123.45.67.89', 'ja'
), (
'', 'Donec ac velit', '2006-03-09 14:24:12', 'Donec ac velit sed...', NULL , 'http://www.irgendeine-domain.de/', NULL , NULL , 'ja'
);
Jetzt können wir uns mit dem Aufbau des PHP-Scriptes beschäftigen.
Verbindung zur Datenbank aufbauen
Als erstes müssen wir eine Verbindung zum Datenbankserver aufbauen und unsere Datenbank anwählen. Erst dann können wir Einträge auslesen bzw. eintragen.
<?php
mysql_connect ('mysqlserver.domain.de','username','passwort');
mysql_select_db ('meine_datenbank');
?>
Die Ausgabe Für die Ausgabe der bisherigen Einträge müssen wir erstmal die vorhandenen Einträge abfragen. Dazu verwenden wir SQL.
SELECT * FROM gaestebuch WHERE sichtbar = 'ja' ORDER BY datum DESC;
Wir fragen alle Datensätze mit allen Felder (*) der Tabelle gaestebuch ab, bei denen das Feld sichtbar den Wert ‘ja’ hat. Die Einträge werde nach datum sortiert. Dabei kommen die neusten Einträge oben.
Das Datum wird als eine fortlaufende Zahl gespeichert. Also Heute ist größer als Gestern, aber kleiner als Morgen. Mit DESC sagen wir, dass die Einträge absteigend sortiert werden sollen. Wenn dies nicht angegeben ist, gilt automatisch ASC – aufsteigend.
<?php
$sql = "SELECT * FROM gaestebuch WHERE sichtbar = 'ja' ORDER BY datum DESC;";
$result = mysql_query ($sql);
?>
Jetzt wollen wir das ganze natürlich ausgeben. Dazu brauchen wir eine Schleife. Bei jedem Durchlauf wird ein Datensatz ausgegeben.
<?php
while ($row = mysql_fetch_assoc ($result)) {
echo "<h2>" . $row['name'] . " hat am " . $row['datum'] . " sich eingetragen</h2>\n";
echo "<p>" . $row['nachricht'] . "</p>\n";
if ($row['website']) echo "<a href=\"" . $row['website'] . "\" target=\"_blank\">" . $row['website'] . "</a><br />\n";
if ($row['email']) echo "<a href=\"mailto:" . $row['email'] . "\">" . $row['email'] . "</a><br />\n";
echo "<br />\n";
}
?>
- \n
- Durch \n wird in PHP ein Zeilenumbruch erzeugt. Das macht den erzeugten HTML-Code leserlicher. ACHTUNG: funktioniert nur, wenn der String mit doppelten Anführungszeichen (“) eingeschlossen wurde.
- \”
- Escaping-Character für Anführungszeichen. Dadurch wird in HTML das Anführungszeichen (“) geschrieben und in PHP nicht als String-Begrenzung angesehen.
- echo string;
- Der Befehl echo kann mit oder ohne Klammern geschrieben werden. Er schreibt den folgenden (oder eingeklammerten) String in die HTML-Seite.
- while (bedingung) {befehle}
- Die Befehle in der geschweiften Klammer (oder ohne Klammer der erste nachfolgende Befehl) wird solange ausgeführt, bis die Bedingung ungültig ist.
- $row[key]
- Die Variable $row ist ein Array. Sie enthält den aktuellen Datensatz. Auf die Felder des Datensatzes kann über den key zugegriffen werden. Dieser ist der Feldname in unserer Datenbank.
Ich übernehme keine Haftung, falls es bei Euch nicht geht. Aber bei mir auf meiner Virtuellen Spielwiese und auch auf meinem Testserver funktioniert es ;-)
P.S. Das Datum ist im Moment noch Absicht! Die Formatierung der Einträge kommt im nächsten Eintrag. Ich wollte es hier nur noch nicht zu kompliziert machen.
Der vollständige PHP-Code
<?php
mysql_connect ('mysqlserver.domain.de','username','passwort');
mysql_select_db ('meine_datenbank');
?>
<?php
$sql = "SELECT * FROM gaestebuch WHERE sichtbar = 'ja' ORDER BY datum DESC;";
$result = mysql_query ($sql);
?>
<?php
while ($row = mysql_fetch_assoc ($result)) {
echo "<h2>" . $row['name'] . " hat am " . $row['datum'] . " sich eingetragen</h2>\n";
echo "<p>" . $row['nachricht'] . "</p>\n";
if ($row['website']) echo "<a href=\"" . $row['website'] . "\" target=\"_blank\">" . $row['website'] . "</a><br />\n";
if ($row['email']) echo "<a href=\"mailto:" . $row['email'] . "\">" . $row['email'] . "</a><br />\n";
echo "<br />\n";
}
?>
Zurück zu Teil 1