Kein Absatz im Gästebuch

neopayne

Erfahrenes Mitglied
Dieses Beispiel find ich eigentlich super zum lernen. Geht auch alles bis auf eine Sache. Wenn ich einen Text eingebe kann ich keinen Absatz machen.

Das heisst wenn ich einen mache werde er danach entfernt. Der html-Befehl <br> geht auch nicht und \n auch nicht.

Hoffe mir kann jemand helfen!

CODE

<html>
<head>
<title>PHP Beispiel 3: Ein Gästebuch !</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" link="#FF6666" alink="#CC6600" vlink="#CC0000">
<a href="s3.phps">Quellcode</a>
<h1><a href="index.html">PHP</a> Beispiel 3: Ein einfaches Gästebuch </h1>
Dies ist als Beispiel für PHP-Einsteiger gedacht, nicht als fertige
Lösung...
<hr />

<?php
# ein simples, aber seinen Zweck erfüllendes Gästebuch, einfach nachnutzbar !
# das HTML-Layout ist natürlich noch "ausbaufähig" ;-)
# Steffen.Brose@hrz.tu-chemnitz.de
#
# Achtung ! Damit das Ganze funktioniert, müssen dem Webserver
# die entsprechenden AFS-Rechte im Verzeichnis, das das Gästebuch enthält,
# gewährt werden ! Entsprechendes Linux-Kommando: fs sa . www:www-user write
#
# Insbesondere die nächsten beiden Variablem sollten auf Werte gesetzt werden,
# die eigenen Vorstellungen/Gegebenheiten entsprechen:

# Variable pfad: Pfad (Ort) des Gästebuchs
$pfad = "tmp/s3.guestbook.html";
# Fehlernachricht an den Aufrufenden, wenn ein Eintrag vergessen wurde
$fehler = 'Bitte ausfüllen!';

# Variablen aus Formular:
$name = $_REQUEST['name'];
$home = $_REQUEST['home'];
$kommentar = $_REQUEST['kommentar'];

if ($name && $kommentar) {
# Einträge okay, kann ins Gästebuch schreiben
if (!($fp = fopen($pfad, "a"))) {
echo "Fehler beim Öffnen des Gästebuches!"; exit;
}
if (!($pos = ftell($fp))) {
# $pos==0: erster Eintrag ins Gästebuch - Überschrift etc. erzeugen!
$titel = "<html>
<head>
<title>PHP Beispiel 3: Mein Gästebuch </title>
</head>
<body bgcolor=\"#FFFFFF\" TEXT=\"#000000\" LINK=\"#FF6666\" ALINK=\"#CC6600\" VLINK=\"#CC0000\">
<h1>Mein Gästebuch - PHP-Beispiel</h1>
<hr>";
if (!($ok = fwrite($fp, $titel, strlen($titel)))) {
echo "Fehler beim Schreiben ins Gästebuch!\n"; exit;
}
}
# Eintrag wird aus HTML-Statements und Formulardaten zusammengebaut:
# Dabei werden evtl. HTML-Eingaben der Nutzer kodiert - htmlspecialchars

$eintrag = "<b>Absender</b>: " . htmlspecialchars($name) . "<br>
<b>Homepage</b>: " . htmlspecialchars($home) . "<br>
<b>Abgeschickt am</b>: " . date('d. F Y H:i') . "<br>
<b>von Rechner</b>: " . $_SERVER['REMOTE_HOST'] . "/" . $_SERVER['REMOTE_ADDR'] . "<p>
<b>Mein Beitrag</b>:<br> " . htmlspecialchars($kommentar) . "<p><hr>\n\n";
if (!($ok = fwrite($fp, $eintrag, strlen($eintrag)))) {
echo "Fehler beim Schreiben ins Gästebuch!\n"; exit;
}
fclose($fp);
# Info an den Nutzer nach Absenden des Formulars:
echo "Danke für Deine (hoffentlich!) nützlichen Informationen.<br />\n Sie wurden in <a href=\"$pfad\">mein Gästebuch</a> aufgenommen.";
exit;
}
if (isset($_REQUEST['ausgefuellt'])) {
# Name und/oder Kommentar nicht ausgefüllt ?
if (! $name) $name_fehlt = $fehler;
if (! $kommentar) $kommentar_fehlt = $fehler;
}
echo "<a href=\"$pfad\">Gästebuch ansehen</A><P>";
?>
<!-- das eigentliche Formular: -->
<h3>Hier kannst Du Dich in meinem Gästebuch &quot;verewigen&quot; ;-)</h3>
<p>
<form action="s3.php" method=post>
<input type="hidden" name="ausgefuellt" value="1">
<table border=0>
<tr><td>Dein Name:</td><td><input type="text" name="name" value="<?php echo $name ?>"
<?php echo $name_fehlt; ?>
</td>
</tr>
<tr><td>Deine Homepage:<br>(falls vorhanden)</td><td><input type="text" name="home" value="<?php echo $home ?>"></td>
</tr>
<tr><td>Dein Kommentar:</td><td><textarea rows=10 cols=35 name="kommentar"><?php echo $kommentar ?></textarea></td>
<?php echo $kommentar_fehlt; ?>
</tr>
<tr><td><input type="submit" value="Absenden"><br>
</tr>
</table>
</form>
</body>
</html>
 
[phpf]nl2br[/phpf] könnte helfen?
Und bitte benutze die Code-Tags [ php ]DeinCode[ /php ] (natürlich ohne Leerzeichen).
 
Nein. Dein Vorschlag würde jedes Steuerzeichen, welches von der nl2br()-Funktion in einen erzwungenen HTML-Zeilenumbruch umgewandelt würde, anschließend durch den Anfang bzw. das Ende eines Absatzes ersetzt. Somit wäre jeder Zeilenumbruch der Anfang bzw. das Ende eines Absatzes. Und damit meine ich wirklich jeder. Auch dort, wo ein Steuerzeichen möglicherweise nur zum strukturellen Zwecke während der Eingabe eingesetzt wurde, wie z. B. bei Tabellen, Listen, et cetera.
 
Somit wäre jeder Zeilenumbruch der Anfang bzw. das Ende eines Absatzes.
Ja, das ist mir bewusst. Soll ja auch so sein. Oder soll man sonst einfach doppelte Zeilenumbrüche als neuen Absatz werten? Mir ist da nicht ganz klar, aufgrund welcher Kriterien entschieden werden soll, ob ein neuer Absatz oder einfach eine neue Zeile beginnt.
 
Zurück