einfaches Gästebuch für eigene Homepage

Otep

PCGH-Community-Veteran(in)
einfaches Gästebuch für eigene Homepage

Hallo,

ich bin gerade dabei mir ne eigene Homepage zu erstellen... (CSS/XHTML)
Nun bin ich auf der Suche nach nem einfachen Gästebuch...
Da ich mit der Aktion Neuland betrete habe ich nicht viel Ahnung wo, wie, was... (hab bis vor 2 Wochen mit dem ganzen noch nie was zu tun gehabt)... :ugly:

Ich habe schon ein paar ausprobiert... allerdings bin ich damit nicht klar gekommen...

Für Hilfe und Tipps wäre ich sehr dankbar...


GreZze Otep ;)
 
AW: einfaches Gästebuch für eigene Homepage

Wenn der Server PHP und MySQL unterstützt, dann würde der Code ungefähr so aussehen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Gästebuch</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link href="stylesheet.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div style="width:600px" id="guest">
<h1 id="guest1">Gästebuch</h1>
<form action="guestbook.php" method="post">
Dein <strong>Name</strong>:<br>
<input type="text" name="Name" id="Name" /><br>
Homepage (freiwillig):<br>
<input type="text" name="Home" id="Home" /><br>
Deine <b>Botschaft</b>:<br>
<textarea cols="65" rows="5" name="Kommentar" id="Kommentar"></textarea><br>
Ziehe vom Jahr (YYYY) den Tag (TT) ab:<br>
<input type="text" name="resultat" maxlenght="4" /><br>
<input type="submit" value="Zurücksetzen" name="reset" />
<input type="submit" value="Eintragen!" name="submit" />
</form>


<?php
$start = 0;
$step = 4;

if (isset($_GET["start"])) {
$muster = "/^[0-9]+$/";
if (preg_match($muster, $_GET["start"]) == 0) {
$start = 0;
} else {
$start = $_GET["start"];
}
}
$nr = $start + 1;


include("zugriff.php");

if (isset($_POST["submit"])) {

$Name = $_POST["Name"];
$Home = $_POST["Home"];
$Kommentar = $_POST["Kommentar"];
$resultat = $_POST["resultat"];



$endwert = date("Y") - date("j");
$fehler = false;
$fehlertext = "<p>";

if (empty($Name)) {
$fehler = true;
$fehlertext .= "Der Name fehlt!<br>";
}

if (empty($Kommentar)) {
$fehler = true;
$fehlertext .= "Bitte einen Kommentar eintragen!<br>";
}

if (!$fehler && (empty($resultat) || $resultat != $endwert)) {
$fehler = true;
$fehlertext .= "Test nicht bestanden!";
}

if ($fehler) {
echo "$fehlertext</p>";
die("</div></body></html>");
}
else {
$datum = date("d.m.Y, H:i") . "Uhr";
$sql = "INSERT INTO guestbook
VALUES ('', '$Name', '$Home', '$datum', '$Kommentar', '1')";

mysql_query($sql);

if (mysql_affected_rows() > 0) {
echo "<h3>Eintrag erfolgreich</h3>";
}
else {
echo "<h3>Eintrag nicht erfolgreich!</h3>";
}
}
}

$sql1 = "SELECT * FROM guestbook WHERE Zeigen = 1";
$sql2 = "SELECT * FROM guestbook WHERE Zeigen = 1 ORDER BY id DESC LIMIT $start, $step";
$result1 = mysql_query($sql1);
$zeilen = mysql_num_rows($result1);
$result2 = mysql_query($sql2);

for ($i = 0; $zeilen > $i; $i = $i + $step) {
$anf = $i + 1;
$end = $i + $step;
if ($end > $zeilen) {
$end = $zeilen;
}
if ($anf == $end) {
echo "[ <a href=\"guestbook.php?start=$i\">$end</a> ]";
}
else {
echo "[ <a href=\"guestbook.php?start=$i\">$anf-$end</a> ]";
}
}
echo "<h2>Bisherige Einträge:</h2>";
echo "<p>Anzahl der Einträge: $zeilen</p>\n";
// while-Schleife Anfang
while($row = mysql_fetch_assoc($result2)) {
echo "<p><strong>$nr.</strong> <b>"
. htmlspecialchars($row["Name"]) . "</b> ";
if (!empty($row["Home"])) {
echo "(" . htmlspecialchars($row["Home"]) . ")";
}
echo "<br>--> schrieb am " .
"<strong>" . $row["Datum"] . "</strong>:</p>" .
"<p>" . nl2br(htmlspecialchars($row["Kommentar"])) .
"</p><hr>\n";
$nr++;
} // while Ende
mysql_close();
?>


</div>

</body>
</html>
Das ist meine Version, funktioniert sehr gut.

Dazu kommt noch die zugriff.php:

<?php
@mysql_connect("localhost", "Name", "Passwort") or die("Verbindung zu MySQL gescheitert!");
@mysql_select_db("Datenbankname") or die("Datenbankzugriff gescheitert!");
?>

Die Datenbanktabelle die du anlegen musst, damit das funktioniert, sollte guestbook heißen.
 
AW: einfaches Gästebuch für eigene Homepage

Jup, PHP und SQL wird unterstützt... hab das heute morgen nur noch nicht ganz hin bekommen ;)

Der verlangt dann immer ne guestbook.php und an sich schauts a biosserl komisch aus ??

kannst Dir ja mal anschauen...

Ich muss doch ne *.HTML erstellen in der ich den oberen Quelltext einfüge, und ne zugriff.php... oder?

in der Tabelle guestbook musste ich mind. 1 Feld anlegen... das habe ich guestbook genannt...

Anhang anzeigen 141380

Gästebuch
 
Zuletzt bearbeitet:
AW: einfaches Gästebuch für eigene Homepage

also bei ner mysql tabelle brauchst du schon ein wenig mehr ^^

du willst da also ein gästebuch haben - was wirst du dort speichern müssen? zumindest einmal den eintrag. also das was geschrieben wurde. das wird in der regel nen text sein. int (ganze zahlen) fallen hier also schonmal weg. bei akku heisst dieses feld Kommentar. du solltest im pma (phpMyAdmin - das pic was du da gemacht hast zeigt den pma) also schonmal ein feld namens Kommentar anlegen, was vom typ text is. was wirst du vllt noch brauchen? najo, nen name wär nich schlecht. willst ja auch wissen, wer das geschrieben hat. und nen datum eventuell. also bräuchtest du auch 2 weitere felder. eines nennst du eben Name (oder vllt auch Autor - bei akku müsstest du es name nennen) und ein anderes Datum. ein name is auch wieder keine zahl, aber auch noch kein text. hierfür würde sich der typ Char eignen. bei dem musst du aber noch ne länge angeben. bei deinem guestbook feld hast du int(11) stehn - das bedeuted, das kann int-zahlen mit einer länge von bis zu 11 ziffern aufnehmen. also zum bsp 12345678901. bei char funzt das genauso: char(20) hieße, dass die dort eingetragenen namen maximal aus 20 buchstaben bestehen dürften. "max hermann von buxtelhütten" wäre mit 28 zeichen zu lang und würde beim eintragen in die db auf "max hermann von buxt" gekürzt. kannst dich also entscheiden, wie lange namen du maximal akzeptieren magst. beim Datum gibts direkt die typen Date, Time und DateTime. da nimmste halt, was dir wichtig is. wenn dir nur das datum wichtig is, ohne eine zeitangabe, dann Date, wenn beides interessant is DateTime usw. oftmals isses auch sinnvoll, das datum als timestamp zu speichern, aber da wirds etwas kniffliger. dabei müsstest du den typ als int(11) wählen, da ein timestamp aus 11 zeichen besteht.

gut, Name, Kommentar und Datum haben wir. das sollte das wichtigste gewesen sein. nun müssen wir der DB noch was gutes tun: ein ID feld. ne tabelle brauch nen sogenannten schlüsselwert - nen primärschlüssel. was eignet sich hier besser als ne ID - eine fortlaufende nummer jedes eintrags. nennst das ding als ID und gibst ihm den typ int mit kA 10 länge (da biste jedenfalls auf jahre hin sicher :P) und musst noch (glaub bei extras wars) auto_increment angeben. das heisst, das die db bei jedem neuen eintrag die id automatisch um 1 erhöht. begonnen wird dabei mit ner 1. der erste post hat also die id 1, der 2. die 2 usw.

bei akku steht noch was von "Zeige" drin, denke mal das is nen flag-wert, der anzeigt, ob mans schon gelesen hat oder nich. auch nen netter gedanke. dafür sollte tinyint mit der länge 1 reichen (0 oder 1 eben). aaah ich seh grad, bei akku kann man noch ne homepage angeben, wenn man mag. das is das feld was Home heisst. müsstest du auch char nehmen, aber hier nen bissl großzügiger sein. char(100) sollte aber reichen. soll ja keiner google links oder so angeben mit 1000en zeichen *dramatisier* ^^ nur irgendwie sind alle einträge bei dir mit "zeige=1" versehen und das ändert sich au ned akku. welchen sinn hat das teil also? ^^ oder haste da was vergessen? *g* oder ich hab grad was übersehn *grübel*
 
AW: einfaches Gästebuch für eigene Homepage

Das stimmt schon, aber der Hauptquelltext muss in die guestbook.php.

Einfach Editor nehmen, einfügen und dann bei Dateiname guestbook.php angeben.

Achja, der SQL Code. Einfach bei PHPMyadmin die erstellte Datenbank anklicken, dann auf SQL und dann folgenden Code rein:

create table guestbook (
Name varchar(35),
Home varchar(50),
Datum varchar(30),
Kommentar text,
Zeigen tinyint
)

Und dann noch auf OK klicken, fertig.
 
Zuletzt bearbeitet:
AW: einfaches Gästebuch für eigene Homepage

also bei ner mysql tabelle brauchst du schon ein wenig mehr ^^

du willst da also ein gästebuch haben - was wirst du dort speichern müssen? zumindest einmal den eintrag. also das was geschrieben wurde. das wird in der regel nen text sein. int (ganze zahlen) fallen hier also schonmal weg. bei akku heisst dieses feld Kommentar. du solltest im pma (phpMyAdmin - das pic was du da gemacht hast zeigt den pma) also schonmal ein feld namens Kommentar anlegen, was vom typ text is. was wirst du vllt noch brauchen? najo, nen name wär nich schlecht. willst ja auch wissen, wer das geschrieben hat. und nen datum eventuell. also bräuchtest du auch 2 weitere felder. eines nennst du eben Name (oder vllt auch Autor - bei akku müsstest du es name nennen) und ein anderes Datum. ein name is auch wieder keine zahl, aber auch noch kein text. hierfür würde sich der typ Char eignen. bei dem musst du aber noch ne länge angeben. bei deinem guestbook feld hast du int(11) stehn - das bedeuted, das kann int-zahlen mit einer länge von bis zu 11 ziffern aufnehmen. also zum bsp 12345678901. bei char funzt das genauso: char(20) hieße, dass die dort eingetragenen namen maximal aus 20 buchstaben bestehen dürften. "max hermann von buxtelhütten" wäre mit 28 zeichen zu lang und würde beim eintragen in die db auf "max hermann von buxt" gekürzt. kannst dich also entscheiden, wie lange namen du maximal akzeptieren magst. beim Datum gibts direkt die typen Date, Time und DateTime. da nimmste halt, was dir wichtig is. wenn dir nur das datum wichtig is, ohne eine zeitangabe, dann Date, wenn beides interessant is DateTime usw. oftmals isses auch sinnvoll, das datum als timestamp zu speichern, aber da wirds etwas kniffliger. dabei müsstest du den typ als int(11) wählen, da ein timestamp aus 11 zeichen besteht.

gut, Name, Kommentar und Datum haben wir. das sollte das wichtigste gewesen sein. nun müssen wir der DB noch was gutes tun: ein ID feld. ne tabelle brauch nen sogenannten schlüsselwert - nen primärschlüssel. was eignet sich hier besser als ne ID - eine fortlaufende nummer jedes eintrags. nennst das ding als ID und gibst ihm den typ int mit kA 10 länge (da biste jedenfalls auf jahre hin sicher :P) und musst noch (glaub bei extras wars) auto_increment angeben. das heisst, das die db bei jedem neuen eintrag die id automatisch um 1 erhöht. begonnen wird dabei mit ner 1. der erste post hat also die id 1, der 2. die 2 usw.

bei akku steht noch was von "Zeige" drin, denke mal das is nen flag-wert, der anzeigt, ob mans schon gelesen hat oder nich. auch nen netter gedanke. dafür sollte tinyint mit der länge 1 reichen (0 oder 1 eben). aaah ich seh grad, bei akku kann man noch ne homepage angeben, wenn man mag. das is das feld was Home heisst. müsstest du auch char nehmen, aber hier nen bissl großzügiger sein. char(100) sollte aber reichen. soll ja keiner google links oder so angeben mit 1000en zeichen *dramatisier* ^^ nur irgendwie sind alle einträge bei dir mit "zeige=1" versehen und das ändert sich au ned akku. welchen sinn hat das teil also? ^^ oder haste da was vergessen? *g* oder ich hab grad was übersehn *grübel*

bghjhjkghkg Bitte löschen
 
AW: einfaches Gästebuch für eigene Homepage

also bei ner mysql tabelle brauchst du schon ein wenig mehr ^^

du willst da also ein gästebuch haben - was wirst du dort speichern müssen? zumindest einmal den eintrag. also das was geschrieben wurde. das wird in der regel nen text sein. int (ganze zahlen) fallen hier also schonmal weg. bei akku heisst dieses feld Kommentar. du solltest im pma (phpMyAdmin - das pic was du da gemacht hast zeigt den pma) also schonmal ein feld namens Kommentar anlegen, was vom typ text is. was wirst du vllt noch brauchen? najo, nen name wär nich schlecht. willst ja auch wissen, wer das geschrieben hat. und nen datum eventuell. also bräuchtest du auch 2 weitere felder. eines nennst du eben Name (oder vllt auch Autor - bei akku müsstest du es name nennen) und ein anderes Datum. ein name is auch wieder keine zahl, aber auch noch kein text. hierfür würde sich der typ Char eignen. bei dem musst du aber noch ne länge angeben. bei deinem guestbook feld hast du int(11) stehn - das bedeuted, das kann int-zahlen mit einer länge von bis zu 11 ziffern aufnehmen. also zum bsp 12345678901. bei char funzt das genauso: char(20) hieße, dass die dort eingetragenen namen maximal aus 20 buchstaben bestehen dürften. "max hermann von buxtelhütten" wäre mit 28 zeichen zu lang und würde beim eintragen in die db auf "max hermann von buxt" gekürzt. kannst dich also entscheiden, wie lange namen du maximal akzeptieren magst. beim Datum gibts direkt die typen Date, Time und DateTime. da nimmste halt, was dir wichtig is. wenn dir nur das datum wichtig is, ohne eine zeitangabe, dann Date, wenn beides interessant is DateTime usw. oftmals isses auch sinnvoll, das datum als timestamp zu speichern, aber da wirds etwas kniffliger. dabei müsstest du den typ als int(11) wählen, da ein timestamp aus 11 zeichen besteht.

gut, Name, Kommentar und Datum haben wir. das sollte das wichtigste gewesen sein. nun müssen wir der DB noch was gutes tun: ein ID feld. ne tabelle brauch nen sogenannten schlüsselwert - nen primärschlüssel. was eignet sich hier besser als ne ID - eine fortlaufende nummer jedes eintrags. nennst das ding als ID und gibst ihm den typ int mit kA 10 länge (da biste jedenfalls auf jahre hin sicher :P) und musst noch (glaub bei extras wars) auto_increment angeben. das heisst, das die db bei jedem neuen eintrag die id automatisch um 1 erhöht. begonnen wird dabei mit ner 1. der erste post hat also die id 1, der 2. die 2 usw.

bei akku steht noch was von "Zeige" drin, denke mal das is nen flag-wert, der anzeigt, ob mans schon gelesen hat oder nich. auch nen netter gedanke. dafür sollte tinyint mit der länge 1 reichen (0 oder 1 eben). aaah ich seh grad, bei akku kann man noch ne homepage angeben, wenn man mag. das is das feld was Home heisst. müsstest du auch char nehmen, aber hier nen bissl großzügiger sein. char(100) sollte aber reichen. soll ja keiner google links oder so angeben mit 1000en zeichen *dramatisier* ^^ nur irgendwie sind alle einträge bei dir mit "zeige=1" versehen und das ändert sich au ned akku. welchen sinn hat das teil also? ^^ oder haste da was vergessen? *g* oder ich hab grad was übersehn *grübel*

durch das Zeigen lassen sich Einträge halt einfach nur ausblenden, statt löschen...
Wenn du hier den Standardwert auf 0 setzt, dann wird der Eintrag erst angezeigt, nachdem du ihn gelesen hast, somit kann man verhindern, dass Leute irgendwelchen Mist schreiben.
Kannste aber auch weglassen...
 
AW: einfaches Gästebuch für eigene Homepage

Hallo :)

Also, ich habe nun folgendes in der Tabelle geändert:

Anhang anzeigen 142188

Zudem habe ich nun ne guestbook.php und ne zugriff.php...

nun sieht das ganze schon besser aus, läuft aber noch nicht :( klickmich

An was kanns liegen :huh:


// while-Schleife Anfang
while($row = mysql_fetch_assoc($result2)) {
echo "<p><strong>$nr.</strong> <b>"
. htmlspecialchars($row["Name"]) . "</b> ";
if (!empty($row["Home"])) {
echo "(" . htmlspecialchars($row["Home"]) . ")";
}
echo "<br>--> schrieb am " .
"<strong>" . $row["Datum"] . "</strong>:</p>" .
"<p>" . nl2br(htmlspecialchars($row["Kommentar"])) .
"</p><hr>\n";
$nr++;
} // while Ende

Das rote is dei Zeile 113... den Fehler habe ich schon im Inet gesucht... aber keine Lösung gefunden...


EDIT:

Den Fehler konnte ich nun beheben... allerdings werden Beiträge nicht angezeigt bzw. kommt die Meldung
Eintrag nicht erfolgreich!
 
Zuletzt bearbeitet:
AW: einfaches Gästebuch für eigene Homepage

ich glaub der insert befehl is falsch. hat mich scho beim ersten mal was dran gestört (da wird der db ned gesagt, welcher wert zu welcher spalte gehört).

mach mal aus
$sql = "INSERT INTO guestbook
VALUES ('', '$Name', '$Home', '$datum', '$Kommentar', '1')";

$sql = "INSERT INTO guestbook
SET
Name = '".$Name."',
Home = '".$Home."',
Datum = '".$datum."',
Kommentar = '".$Kommentar."',
Zeigen = '1';";

also so kenne ichs zumindest. vllt liegts ja daran *schulterzuck*

edit: hab grad noch http://tut.php-quake.net/de/guestbook.html#s5 gefunden. da sieht es so aus:
$sql = "INSERT INTO guestbook (Name, Home, Datum, Kommentar, Zeigen)
VALUES ('$Name', '$Home', '$datum', '$Kommentar', '1')";

und du solltest die eingegebenen daten noch "filtern". weil man kann sonst unfug mit deiner gästebuch tabelle machen, was nich unbedingt wünschenswert wäre. steht auch was dazu in dem tutorial.
 
Zuletzt bearbeitet:
AW: einfaches Gästebuch für eigene Homepage

Es geht :hail:

Jetzt muss ich es nur noch hinbekommen, das es mir das ganze zum Scrollen anzeigt, so das sich die Page quasi nicht nach unten verlängert....

Aber immer hin läufts jetzt schon mal :daumen:
 
AW: einfaches Gästebuch für eigene Homepage

ah supi *g*

hmm, du musst dann sicherlich das ganze in 2 div container packen. also die eingabe maske in einen un die ausgabe in den 2. und beim 2. dann das scrollen erlauben (am besten mal bei selfhtml schauen). mehr fiele mir da spontan nich zu ein ^^
 
AW: einfaches Gästebuch für eigene Homepage

Ah, hab schon a bisserl was gefunden :) muss ich dann später mal ausprobieren... ob das hin haut :ugly:

Gruss zurück ;)
 
Zurück