David Burkardt: Zeilenumbrüche werden nach schreiben in mySQL gelöscht..¿?!

Hallo Forumgemeinde.

Bin da schon lange am rumknorzen aber komm irgendwie nicht auf den grünen Zweig.
Das Problem im Detail.
Ich habe ein kleines Gästebuch in PHP und mySQL.
Der Text kommt hier rein:
<textarea name='message' rows=8 cols=40></textarea>
Wenn ich das auslese kommt der ganze Text auf einer Linie, Sprich alle Umbrüche werden gelöscht.
Das sieht natürlich nicht gerade schick aus.
Es ist sicher möglich, beim schreiben oder lesen irgendwelche Parameter anzugeben.. nur, ich kenne sie nicht :)

Ich freue mich sehr über jeden Tip!

David Burkardt.

p.s. falls das nütz, hier die ein und ausgabe:

==> schreiben:

if (isset($message))
{
if ($email == "")
{
$email = "";
}
mysql_connect ($server, $user, $password) or die ("Can't connect!");
mysql_select_db ($database) or die ("Can't open database!");
$sql = "INSERT INTO $table (name, email, message, date) VALUES ('$name', '$email', '$message', NOW())";
$result = mysql_db_query($database, $sql);
if ($result)
echo "<meta http-equiv='Refresh' content='0; URL=" . $PHP_SELF . "'>";
else
echo "Error! Check the form!";
mysql_close();
}

==> lesen:

if (!isset($show))
{
$show = 0;
}
mysql_connect($server, $user, $password) or die ("Can't connect!");
mysql_select_db($database) or die ("Can't open database!");
$sql = "SELECT * FROM $table ORDER BY id DESC";
$result = mysql_db_query($database, $sql);
if ($result)
{
$count = mysql_num_rows($result);

$sqlshow = "SELECT * FROM $table ORDER BY id DESC LIMIT $show, $maxshow";
$result = mysql_db_query($database, $sqlshow);
?>
        <?
while (($myrow = mysql_fetch_array($result)))
{
echo "von: " . htmlspecialchars($myrow["name"]) . "" . "<br>email: <a href=mailto:" . htmlspecialchars($myrow["email"]) . ">" . htmlspecialchars($myrow["email"]) . "</a><br><br><b>" . htmlspecialchars($myrow["message"]) ."</b><br><br>" . $myrow["date"] . "<br><hr><br>";
}
?>

  1. Hi

    versuchs so mal:

    <textarea name='message' rows=8 cols=40 wrap=hard></textarea>.

    Gruss
    Carl

    1. geht leider nicht :'(

      danke trotzdem.

      david burkardt.

      Hi

      versuchs so mal:

      <textarea name='message' rows=8 cols=40 wrap=hard></textarea>.

      Gruss
      Carl

  2. Halli,

    echo "von: " . htmlspecialchars($myrow["name"]) . "" . "<br>email: <a href=mailto:" . htmlspecialchars($myrow["email"]) . ">" . htmlspecialchars($myrow["email"]) . "</a><br><br><b>" . htmlspecialchars($myrow["message"]) ."</b><br><br>" . $myrow["date"] . "<br><hr><br>";

    Die Zeilenumbrüche aus der Textarea kommen als CarriageReturn Linefeed beim Server an. Wenn Du das genauso wieder ins HTML reinschreibst, stehen dort natürlich nur CarriageReturn Linefeed. Diese Zeichen werden in HTML aber wie jeder andere Whitespace behandelt.

    Du solltest also bei der Ausgabe als normales HTML die Zeilenumbrüche durch <br> ersetzen.

    nl2br() ist die dazu gemachte PHP-Funktion.

    cu,
    Robert

    1. nebnebemerkung.. in der database sind, so zeigt phpmyadmin, die umbrüche korrekt.

      ehmm.. bin noch n noob in php.. über konkrete codecorschläge bin ich also sehr dankbar!! :)

      aber ich beginne mal zu basteln...

      Halli,

      echo "von: " . htmlspecialchars($myrow["name"]) . "" . "<br>email: <a href=mailto:" . htmlspecialchars($myrow["email"]) . ">" . htmlspecialchars($myrow["email"]) . "</a><br><br><b>" . htmlspecialchars($myrow["message"]) ."</b><br><br>" . $myrow["date"] . "<br><hr><br>";

      Die Zeilenumbrüche aus der Textarea kommen als CarriageReturn Linefeed beim Server an. Wenn Du das genauso wieder ins HTML reinschreibst, stehen dort natürlich nur CarriageReturn Linefeed. Diese Zeichen werden in HTML aber wie jeder andere Whitespace behandelt.

      Du solltest also bei der Ausgabe als normales HTML die Zeilenumbrüche durch <br> ersetzen.

      nl2br() ist die dazu gemachte PHP-Funktion.

      cu,
      Robert