Gästebuch mit MySQL und Seiten Zurück zur Übersicht
Über den Autor
Moin Moin, ich dachte mir ich könnte auch einmal ein Tutorial machen, ein Gästebuch war noch nicht zu sehen, also los!
Mein Tutorial basiert auf dem Prinzip "Lerning by Doing". Die Kommentare im Quellcode erklären.
Wichtig: Das Gästebuch ist fast ohne jegliche Sicherheitsvorkehrungen und dient somit nur zum orientieren.
Zuerst brauchen wir unsere MySQL Zugangsdaten und den Datenbanknamen.
Wenn wir diese haben, können wir die erste Datei schreiben, die die Verbindung zur Datenbank herstellt.
verbinden.php:
<?php $host = "localhost"; //Hostname, standartmaeßig localhost $user = "*********"; //Benutzername $pass = "*********"; //Kennwort $db = "***********"; //Datenbankname $link = mysql_connect($host, $user, $pass) or die ("Keine Verbindung zu der Datenbank möglich!"); ?>
Nun kommen wir direkt zur zweiten Datei. Diese Datei gibt zuerst ein Formular aus, mit dem man sich ins Gästebuch eintragen kann. Darunter werden die Einträge aufgelistet. Ich habe hierbei auf jeglich Formatierungen verzichtet.
gaestebuch.php:
<h2>Gästebuch</h2> <p>Hier können Sie einen Eintrag hinterlassen.</p> <form action="eintragen.php" method="post"> <p>Name: <input type="text" name="name" size="50" /></p> <p>E-mail: <input type="text" name="email" size="50" /></p> <p>Titel: <input type="text" name="titel" size="50" /></p> <p>Nachricht: <textarea id="text" name="inhalt" cols="38" rows="10"></textarea></p> <p><input type="submit" value="Eintragen" /></p> </form> <?php require('verbinden.php'); //Verbindung zur Datenbank aufbauen $seite = $_GET["seite"]; //Seite des Gästebuchs ermitteln, ist in $_GET['seite'] gespeichert { $seite = 1; //Wird Seite 1 aufgerufen. } $eintraege_pro_seite = 10; //Wie viele Einträge sollen pro Seite angezeigt werden? $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite; //Ausrechen von wo die Abfrage beginnen soll $abfrage = "SELECT * FROM gaestebuch ORDER BY id DESC LIMIT $start, $eintraege_pro_seite"; //Übersetzt: Nehme alles aus gaestebuch ordne nach id, absteigend von $start bis $eintraege_pro_seite { $inhalt = $row->inhalt; //$inhalt deklarieren $datum = date("d.m.Y H:i ", $row->datum); //Da das Datum als Timestamp gespeichert ist, muss es formatiert werden, dies geht mit date() $titel = $row->titel; //$titel deklarieren { $name = "<b>$row->name</b>"; //wird der Name Fett dargestellt } else //ansonsten { $name = "<a >email\">$row->name</a>"; //wird ein mailto-link an die E-mailadresse erstellt. } //Ausgeben der Beiträge in einer Tabelle echo " <table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" > <tr> <td> Von <b>$name</b> --- <a >$homepage</a><br /> $datum </td> </tr> <tr> <td> <hr> <b>$titel</b> </td> </tr> <tr> <td> $inhalt </td> </tr> </table>"; } $wieviel_seiten = $menge / $eintraege_pro_seite; //Erechnen der Seiten echo '<br /><br />'; //Ab hier ist alles Zentriert echo '<b>Seite:</b> '; echo "<div align=\"center\">"; //Ab hier ist alles Zentriert echo "<b>Seite:</b> "; for($a=0; $a < $wieviel_seiten; $a++) //Schleife um für jede Seite eine Ziffer mit Link zu erstellen. { //Übersetzt: $a ist gleich 0 Solange $a kleiner als $wieviel_seiten ist, wird die Schleife ausgeführt und bei jedem Durchlauf wird $a um eins erhöht. $b = $a + 1; if($seite == $b) { echo " <b>$b</b> "; //Aktuelle Seite fett darstellen } else { echo " <a >$b</a> "; //Alle anderen Seiten verlinken. } } ?>
Soo jetzt haben wir schon den schwierigsten Teil hinter uns. Wenn man sich das obrige Script aufmerksam durchgelesen hat, merkt man dass wir eine MySQL-Tabelle brauchen.
Nun wir brauchen
-id (Ganzzahl)
-datum als timestamp (Ganzzahl)
-name (unterschiedlich langer Text)
-email (unterschiedlich langer Text)
-titel (unterschiedlich langer Text)
-inhalt (langer Text)
Daraus ergibt sich folgender Query
CREATE TABLE `gaestebuch` ( `id` int(8) UNSIGNED NOT NULL AUTO_INCREMENT, `datum` int(11) NOT NULL, `name` varchar(75) NOT NULL, `email` varchar(75) NOT NULL, `titel` varchar(150) NOT NULL, `inhalt` text(2500) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=870 ;
Denn können wir mit unserem favorisierten MySQL Programm ausführen, ich erkläre es hier für phpMyAdmin:
Nachdem wir unsere Datenban ausgewählt haben klicken wir im Horizontalen Menü auf den Button "SQL".
Es erscheint ein Textfeld in das wir den Query einfügen und anschließend auf ok klicken.
Nun ist die Tabelle erstellt.
Doch ein wichtiger Bestandteil fehlt noch, nämlich das Script zum Eintragen in die Datenbank.
eintragen.php:
<?php require('verbinden.php'); //Verbindung zur Datenbank aufbauen $name = mysql_real_escape_string($_POST['name']); // | Werte aus dem Formular werden in den Variablen gespeichert. $email = mysql_real_escape_string($_POST['email']); // | Die Funktion mysql_real_escape_string() spielt hierbei eine wichtige Rolle. $titel = mysql_real_escape_string($_POST['titel']); // | Sie sorgt dafür das alle Zeichen, die gefährlich werden könnten "escapet" werden $inhalt = mysql_real_escape_string($_POST['inhalt']); // | das heißt die gefährlichen Zeichen werden "entschärft". if(empty($email)){echo'Es muss eine E-mail Adresse angegeben werden!';exit;} // | Prüfen ob auch wirklich alle Felder ausgefüllt wurden if(empty($titel)){echo'Es muss ein Titel angegeben werden!';exit;} // | Ansonsten wird eine Fehlermeldung ausgegeben und das Script wird abgebrochen. $eintrag = "INSERT INTO gaestebuch (datum, name, email, titel, inhalt) VALUES ('$datum', '$name', '$email', '$titel', '$inhalt')"; //Übersetzt: Trage für die Felder ... die Werte ... in der Tabelle geastebuch ein if($eintragen == true) //Wenn das eintragen erfolgreich war, { echo'Sie haben sich erfolgreich in Gästebuch eingetragen!'; //schreibe ... } else //Ansonsten { echo'Es ist ein Fehler beim Eintragen ist Gästebuch aufgetreten!'; //schreibe ... } ?>
Soo das war es. Ihr könnt euch das Gästebuch unter http://www.kolletzki.info/tutorials/space...h.php anschauen.
Fragen oder ähnliches könnt Ihr gerne stellen.
Grüße aus dem Ruhrpott,
Mckbrother