Login


 
Newsletter
Werbung

Do, 20. Juli 2000, 00:00

Ein einfaches Gästebuch

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

  1. Geben Sie an der Konsole den Befehl mysql ein, um den mysql-Client zu starten.
  2. Nun können Sie mit CREATE DATABASE gaestebuch; die Datenbank gaestebuch für unser Beispielprojekt anlegen.
  3. 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 Passwort dummy die nötigen Rechte an unserer Datenbank zu erteilen.
  4. Dann muss mit USE gaestebuch; in die Datenbank gaestebuch gewechselt werden.
  5. Mit CREATE TABLE daten (name TEXT, email TEXT, eintrag LONGTEXT); legen Sie die Tabelle für die Daten in dem Gästebuch an.
  6. 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 (<br>) um. Wird hier benötigt, da der Wert der Variablen $tfc aus einem mehrzeiligen Eingabefeld kommt.
mysqlFü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.

[Installation]
[Beispielprogramm]
[PHP- und SQL-Referenz]

Kommentare (Insgesamt: 2 || Alle anzeigen || Kommentieren )
Re: Skript sicherer machen (Andreas Grundner, Fr, 21. März 2014)
Skript sicherer machen (Andreas Grundner, Fr, 21. März 2014)
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung