Einfaches GB mit PHP & MySQL

n diesem Tutorial will ich euch das Grundgerüst eines Gästebuch mit PHP & MySQL näher bringen.

Ich gehe davon aus das Grundkenntnise vorhanden sind!
Die Erklärung ist bei den wichtigen Sachen im Code enthalten.
--------------------------------------------------------------
Zuerst fügt ihr das in eure MySQL Datenbank ein ( mit PHPMyAdmin ) damit die nötige Tabelle erstellt wird.

CREATE TABLE gb_entries (
id int( 8 ) NOT NULL auto_increment,
name varchar(250) NOT NULL default ''
email varchar(250) NOT NULL default '',
homepage text NOT NULL,
text text NOT NULL,
date varchar(11) NOT NULL default '',
ip varchar(100) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;


jetzt erstellt ihr eine neue Datei namens config.php

<?php
$sql_host = "localhost"; // Der Host der Datenbank ( meist "localhost" )
$sql_db = "guestbook"; // Der Name der Datenbank auf der das Gästebuch liegen soll
$sql_user = "root"; // Der Benutzername zum einloggen in den Datenbankserver
$sql_pw = ""; // Das Passwort zum einloggen in den Datenbankserver

/* Ab hier nichts mehr ändern */

echo '<link rel="stylesheet" type="text/css" href="style.css">'; // Einbinden der Style Datei

$conn = @mysql_connect("$sql_host", "$sql_user", "$sql_pw") or die("DB-Error!"); // Verbindung zur DB aufbauen
$select = @mysql_select_db("$sql_db") or die("Db-Error!"); // Hier wählen wir die Datenbank aus
?>


In dieser Datei bauen wir nur die Verbindung zur Datenbank auf.

Achtung! Nicht vergessen die 4 Einstellungen anzupassen! ( $sql_host, $sql_db, $sql_user, $sql_pw )

Nun erstellt eine neue Datei mit dem Namen index.php

<?php
require ("config.php"); // Wir lesen die Config Datei

/* Hier die Gästebuch Navigation */
echo '<center><a href="'.$PHP_SELF.'?action=add">Eintragen</a> |
<a href="'.$PHP_SELF.'">Zum Gästebuch</a>

</center>';

if($action == "") { // Wenn die Datei aufgerufen wird, kommt:

/* Wir holen die Daten aus der Tabelle gb_entries und ordnen
sie so an das der neuste Eintrag immer oben ist ( ORDER BY id DESC ) */

$result = @mysql_query("SELECT * FROM gb_entries ORDER BY id DESC") or die("DB-Error!");

/* Wir lesen die Daten in html aus */

while ($row = mysql_fetch_array($result)) {

$row[text] = nl2br($row[text]); // Mit nl2br wandeln wir Zeilenumbrüche automatisch um

/* Das Template für die Anzeige */
echo '
<div align="center"><table border="0" cellpadding="2" cellspacing="1" width="500" class="td1">
<tr>
<td width="500"><a href="mailto:'.$row[email].'"><b>'.$row[name].'</b></a> |
<b>'.$row[date].'</b>';
$hp = $row[homepage];
if($hp == "") { // Wenn die Spalte Homepage leer ist, geben wir nichts aus
echo '';
}
elseif($hp == "") { // Wenn in der Spalte nur http:// steht, geben wir nichts aus
echo '';
}
else{ // Wenn etwas anderes drinsteht ( also die Homepage des Authors ), geben wir den Link aus
echo ' | <a href="'.$row[homepage].'" target="_blank"><b>Homepage</b></a>';
}
echo '</td>
</tr>
<tr>
<td width="500">'.$row[text].'</td>
</tr>
</table>';
$id = $row[id];
if($id == "1") { // Wenn ID gleich 1 ist ( erster Eintrag ) gebe keine Trennung aus
echo '';
}
else{ // Wenn ID größer 1 ist gebe Trennung aus
echo '<center>......................................................................</center>';
}
echo '</div>';
}

}

if($action == "add") { // Wenn wir ?action=add an den Dateinamen hängen kommt:

/* Hier nur HTML was jeder wissen müsste */

echo '<div align="center">
<form method="post" action="?action=save">
<table border="0" cellpadding="0" cellspacing="0" class="td1">
<tr>
<td>Name: </td>
<td><input type="text" name="name" class="input" value="'.$_POST['name'].'"></td>
</tr>
<tr>
<td>Email: </td>
<td><input type="text" name="email" class="input" value="'.$_POST['email'].'"></td>
</tr>
<tr>
<td>Homepage: </td>
<td><input type="text" name="homepage" class="input" value="http://'.$_POST['homepage'].'"></td>
</tr>
<tr>
<td valign="top">Kommentar: </td>
<td><textarea name="text" cols="40" rows="10" class="input">'.$_POST['text'].'</textarea></td>
</tr>
<tr>
<td></td>
<td><input type="hidden" name="ip" class="input" value="'.$REMOTE_ADDR.'"></td>
</tr>
<tr>
<td></td>
<td><input type="hidden" name="date" class="input" value="'.date(d).'.'.date(m).'.'.date(Y).'"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="submit" class="input" value="Abschicken"></td>
</tr>
</table>
</form>
</div>';
}

if($action == "save") { // Wenn wir ?action=save an den Dateinamen hängen kommt:

if(!isset($_POST['name']) || $_POST['name'] == "") { // Wenn das Feld Name leer ist kommt
echo '<center>Bitte einen Namen angeben!</center>';
}
elseif(!isset($_POST['email']) ||$_POST['email'] == "") { // Wenn das Feld Email leer ist kommt
echo '<center>Bitte eine Email Adresse angeben!</center>';
}
elseif(!isset($_POST['text']) || $_POST['text'] == "") { // Wenn das Feld Text leer ist kommt
echo '<center>Bitte einen Text angeben!</center>';
}
else{
/* Wir bestimmen die Variablen der Daten */
$name = $_POST['name'];
$email = $_POST['email'];
$homepage = $_POST['homepage'];
$text = $_POST['text'];
$ip = $_POST['ip'];
$date = $_POST['date'];

/* Wir fügen die Daten mit INSERT INTO in die Datenbank ein */

$result = @mysql_query("INSERT INTO gb_entries SET name = '$name', email = '$email', homepage = '$homepage', text = '$text', ip = '$ip', date = '$date'") or die("DB-Error!");

echo '<center>Danke für deinen Eintrag '.$name.'</center>'; // Wenn die Daten eingetragen wurden, kommt

} // Wir beenden die IF-Abfrage wieder
}

?>


Die Erklärung ist jeweils dahinter, sollten denoch Fragen sein, stellt diese in den Kommentaren.

Jetzt noch die Datei style.css erstellen


a { font-size: 10px; font-family: Verdana; color: #000000; text-decoration: none; }
a:hover { font-size: 10px; font-family: Verdana; color: #000000; text-decoration: underline; }

.td1 { font-family: Verdana; font-size: 10px; }
.input { font-family: Verdana; font-size: 10px; border: 1px solid #000000; }


Das waren nur ein paar css- Tags

Ich hoffe das ihr nun eine vorstellung von einem einfachen GB habt....

Kritik usw. in die Kommentare

Mfg Morpheus

Kommentare

cruz
cruz am Dienstag, 12. August 2003 um 01:50

haste ja richtig viel mühe gegeben! danke ;)

Morpheus
Morpheus am Dienstag, 12. August 2003 um 08:51

Naja so viel ist es auch nicht :D

Don E.
Don E. am Mittwoch, 31. Dezember 2003 um 12:25

Danke, genau so ein simples Book suche ich seit ein paar Tagen...gut gemacht.

jepeux
jepeux am Dienstag, 30. März 2004 um 10:41

Wie kann ich das jetzt so machen das es bei klappen würde hab keine frames sondern nur tabellen also wird das gb.php includet und wenn ich auf eintragen klicke will es auf index.php?action=add und es erscheinen die news ???

Tripple_X
Tripple_X am Sonntag, 18. April 2004 um 22:54

kann mir einer sagen wie ich da ne ip sperre einbauen kan?? ih hab alles versucht aber es geht net :(

Tripple_X
Tripple_X am Montag, 19. April 2004 um 17:54

du musst es so machen index.php?sec=guestbook&action=add
<br>oder so ähnlich :p

schroedy19
schroedy19 am Dienstag, 6. Juli 2004 um 17:10

hast du echt gut gemacht und auch sehr gut erklärt ich konnte ohne problem es bei mir einbinden!! mach weiter so!! kannst du dafür eigentlich auch noch einen admin bereich schreiben wäre echt klasse.

Eichhornleib
Eichhornleib am Freitag, 22. Juli 2005 um 23:39

ISt nur ein simples Gästebuch, alle Dateien werden in einer Gespeichert oder? Naja, so dolle ist es nicht.

Ultra2005
Ultra2005 am Samstag, 4. März 2006 um 14:54

hallo, ich finde das tut echt klasse, hab das in meine gb seite gemacht, jeodch zeigt er mir nur die links für eintragen und gb aber wenn auch auf eintragen klicke kommt da nichts, kann da wer helfen?