Ein einfaches Gästebuch
In diesem 2. Teil wird die Datenbankanbindung mit PHP und Apache am Beispiel eines einfachen Gästebuchprogrammes demonstriert.
Vorwort
Ich werde in diesem 2. Teil versuchen, Ihnen die Datenbankanbindung mit PHP und Apache am Beispiel eines einfachen Gästebuchprogrammes zu demonstrieren.
Dieses einfache Gästebuchprogramm, das ich in diesem Beispiel vorstelle, ist nicht zur Verwendung als echtes Gästebuch gedacht, sondern nur als Einstieg, um die PHP-MySQL-Verbindung kennen zu lernen. Wenn Sie ein annehmbares Gästebuch brauchen, laden Sie sich die erweiterten Gästebuchdateien aus der Download-Sektion.
Download
Anlegen der Datenbank und der zulässigen Benutzer
- Geben Sie an der Konsole den Befehl
mysql
ein, um den mysql-Client zu starten. - Nun können Sie mit
CREATE DATABASE gaestebuch;
die Datenbankgaestebuch
für unser Beispielprojekt anlegen. - Als nächstes geben Sie
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE ON gaestebuch.* TO user IDENTIFIED BY 'dummy';
ein, um dem Usernamen webserver mit dem Passwortdummy
die nötigen Rechte an unserer Datenbank zu erteilen. - Dann muss mit
USE gaestebuch;
in die Datenbank gaestebuch gewechselt werden. - Mit
CREATE TABLE daten (name TEXT, email TEXT, eintrag LONGTEXT);
legen Sie die Tabelle für die Daten in dem Gästebuch an. - Nun sind die nötigen Vorbereitungen getroffen und Sie können mit der Programmierung der PHP-Skripte beginnen.
Quelltext der Webseite für den Gästebuch-Neueintrag (addentry.html)
Der Inhalt der Datei ist vereinfacht dargestellt, ohne unnötige Formatierelemente wie Tabellen usw.
<html> <body> <form method=post action=addentry.php> Name: <input type=text name=tfa><br> E-Mail: <input type=text name=tfb><br> Eintrag: <textarea name=tfc rows=10 0></textarea><br><br> <input type=submit> </form> </body> </html>
In dieser Datei wird ein einfaches Formular mit drei Textfeldern zur Dateneingabe benutzt. Beim Abschicken ruft es das Skript addentry.php mit der Methode post
auf (die Methode ist PHP egal, die Einträge in den Feldern stehen immer direkt zur Verfügung).
Die Namen tfa, tfb und tfc sollen einfach eine Abkürzung für Textfeld A, Textfeld B, ... sein. Sie können sie nennen, wie Sie wollen, Sie müssen nur Ihre Variablen im PHP-Skript gleich benennen.
Das PHP-Skript um den Eintrag erweitern
<? if ($tfa == "" or $tfb == "" or $tfc == "") { echo "Sie müssen alle Felder ausfüllen.<br><br>"; } else { $conn_id = mysql_connect("127.0.0.1","user","dummy"); $eintrag = nl2br($tfc); mysql("gaestebuch","insert into daten (name, email, eintrag) VALUES ('$tfa','$tfb','$eintrag')",$conn_id); echo "Eintrag hinzugefügt"; echo "<br><br><a href='gaestebuch.php'>Zurück zum Gästebuch</a>"; } ?>
Erklärung der Befehle
mysql_connect | Baut Verbindung zu dem Datenbankserver mit der IP 127.0.0.1 auf. Benutzername 'user' Passwort 'dummy'. Die Connection-ID wird in der Variable $conn_id gespeichert. |
nl2br | Wandelt Zeilenumbrüche in HTML-Zeilenumbrüche ( ) um. Wird hier benötigt, da der Wert der Variablen $tfc aus einem mehrzeiligen Eingabefeld kommt. |
mysql | Führt SQL-Befehle auf der angegebenen Datenbank ('gaestebuch') auf dem angegebenen Datenbankserver (durch '$conn_id' festgelegt) aus. (Die SQL-Befehle werde ich später etwas erläutern.) |
Das Skript gaestebuch.php (die Startseite)
Dies ist die Startseite und gleichzeitig das Hauptskript für unser Gästebuch. Die Datei ist vereinfacht dargestellt, unötige Formatierungen entfernt.
<? $conn_id = mysql_connect("127.0.0.1","user","dummy"); $result = mysql ("gaestebuch","select * from daten"); $num = mysql_numrows($result); if ($num != 0) { for ($i=0;$i<$num;$i++) { $nrak = $num - $i - 1; $name = mysql_result($result,$nrak,"name"); $email = mysql_result($result,$nrak,"email"); $eintrag = mysql_result($result,$nrak,"eintrag"); echo "<table border=1>"; echo "<h2>Eintrag Nummer $nrak</h2>"; echo "<tr><td width='100'>Name:</td><td width='400'>$name</td></tr>"; echo "<tr><td>E-Mail:</td><td>$email</td></tr>"; echo "<tr><td valign=top>Eintrag:</td><td>$eintrag</td></tr>"; echo "</table><hr>"; } } else echo "<br><br>Keine Einträge!"; ?> </ul> <br><br> <a href="../addentry.html">Eintrag hinzufügen !</a>
Erklärung der Funktion
Das Skript führt zuerst eine SQL-Abfrage durch (select * from daten
), welche alle Datensätze in der Tabelle Daten auflistet. Mit mysql_numrows wird nun die Anzahl der Datensätze ausgelesen und in $num gespeichert. Falls keine Datensätze vorhanden sind, wird eine Fehlermeldung ausgegeben, ansonsten wird mit der for
-Schleife für die Variable $i die Nummer jedes Datensatzes durchlaufen. Mit $nrak = $num - $i -1
wird die Reihenfolge der Zahlen umgekehrt, so dass $nrak
zuerst mit der höchsten Zahl beginnt (d.h. neuester Datensatz zuerst).
Mit mysql_result wird nun der entsprechende Wert aus der entsprechenden Datensatznummer ($nrak) ausgelesen und in eine Variable gespeichert, welche später formatiert mit einer Tabelle ausgegeben wird.
So, das war doch gar nicht so schwer, oder? Installieren Sie einfach mal die Beispieldateien und versuchen Sie sie zu verstehen.
Im nächsten und letzten Kapitel möchte Ich noch etwas näher auf die PHP MySQL-Funktionen und ein paar SQL-Befehle eingehen.