Hi,
ich bin noch ein ziemlicher Anfänger in PHP und ich habe jetzt mit Hilfe des Buches PHP&MySQL easy in eigenes Gästebuch geschrieben.
Doch jetzt habe ich vier Probleme:
1. Wenn man in ein Feld, oder beide Felder nichts einträgt, soll eine Fehlermeldung erscheinen. Diese ist aber schon da, sobald ich die Seite öffne.
2. Wenn ich etwas eintrage und dann auf Vorschau klicke, sehe ich nur das Datum und den Namen, aber nicht den eingegebenen Text. Wenn ich auf eintragen gehe genauso.
3. Wenn ich dann etwas eintrage, sehe ich auch die anderen Einträge, die ich vorher schon gemacht habe(diese sind auch in meiner SQL Datenbank mit Text zu finden) wenn ich aller dings die Seite neu öffne stehen da nur wieder die Fehlermeldungen von 1.
(4.) Dies ist eingentlich noch nichts so dramatisches, möchte ich aber auch noch beheben, vielleicht hägnt es sogar mit einem der anderen Punkte zusammen: Ich habe das Gästebuch mittels include in mein Template eingebunden,
wenn ich also übers Template draufgehe sitzt das Gästebuch schön mittendrin, doch wenn ich dann auf Eintragen oder Vorschau klicke, öffnet er nur die guestbook.php im Browserfenster
Hier der Code von guetbook.php:
(in #mysql.inc sind die einloggdaten für die Datenbank)
<?
include("#mysql.inc");
function PostVar($variablen_name) {
$ergebnis = $_POST[$variablen_name];
if (get_magic_quotes_gpc()) $ergebnis = stripslashes($ergebnis);
return trim($ergebnis); }
function format($text) {
$ergebnis = htmlentities($text);
$ergebnis = str_replace("\r\n\r\n","
",$text);
}
$eintrag = PostVar("eintrag");
$autor = PostVar("autor");
$status = $_POST['status'];
$grenzwert = 1000;
$anzeigen = true;
$fehler = "";
if (empty($eintrag)) $fehler .= "[*]Eintrag fehlt";
if (empty($autor)) $fehler .= "[*]Name fehlt";
if (strlen($eintrag) > $grenzwert) $eintrag = substr($eintrag,0,$grenzwert);
if (!strpos($eintrag," ") || strpos($eintrag," " > 60)) $eintrag = wordwrap($eintrag, 60, " ", 1);
?>
<html>
<head>
<title>Mein Gästebuch</title>
<meta>
</head>
<body text="#000000" alink="#000000" link="#000000" vlink="#000000">
<table width="100%" cellspacing="2" border="0"><tr><td>
<font face="Tahoma" size="-1">
Mein Gästebuch
<?
if (!empty($fehler)) {
$anzeigen = false;
echo "
Leider konnte ihr Beitrag nicht angenommen werden:</p>";
echo "<ul>$fehler[/list]";
}
elseif ($status == "Vorschau") {
$anzeigen = false;
$datum = date("\a\m j. n. Y \u\m H:i");
?>
So sieht Ihr Eintrag derzeit aus:
<hr width="500" noshade>
<?=format($eintrag)?></p>
[size=8]
[b]<?=htmlentities($autor),", $datum"?>[/b]
[/size]
</p>
<hr width="500" noshade>
[b]Um Ihren Beitrag zu bearbeiten, benutzen Sie bitte das Formular.[/b]
</p>
<?
}
elseif ($status == "Eintragen") {
$query = "INSERT INTO guestbook SET
datum = now(),
eintrag = '".addslashes($eintrag)."',
autor = '".addslashes($autor)."'
";
$sql = mysql_query($query)
or die(mysql_error());
}
if ($anzeigen) {
$query = "SELECT DATE_FORMAT(datum,'am %e. %c. %Y um %k:%i') AS datum, eintrag, autor FROM guestbook
ORDER BY datum DESC";
$sql = mysql_query($query) or die(mysql_error());
while ($ds = mysql_fetch_object($sql)) {
$eintrag = $ds->eintrag;
$autor = $ds->autor;
$datum = $ds->datum;
?>
<?=format($eintrag)?>
</p>
[size=8]
[b]<?=htmlentities($autor),", $datum" ?>[/b]
[/size]
</p>
<hr width="500" noshade>
<?
}
unset($eintrag,$autor);
}
?>
<form action="guestbook.php" method="post">
[size=8][b]Ihr Eintrag (maximal <?=$grenzwert ?> Zeichen):[/b][/size]
<textarea style="width : 600px; height : 240px" name="eintrag"><?=htmlentities($eintrag)?></textarea>
</p>
[size=8][b]Ihr Name:[/b][/size]
<input style="width : 600px" type="text" maxlength="50" name="autor" value="<?=htmlentities($autor)?>">
</p>
<input type="submit" name="status" value="Vorschau">
<input type="submit" name="status" value="Eintragen">
</p>
</form>
</td></tr>
</table>
</font>
</body>
</html>
Alles anzeigen
Ich hoffe ihr könnt mir helfen...
Danke schonmal im Voraus.