PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Texte formatieren (MySQL/PHP)


Crazy Aimer
2003-01-10, 14:55:02
Hallo! :)
Ich hab da ein Problem mit der Ausgabe von Texten einer MySQL-Tabelle:
Ich hab eine Tabelle "news" und eine Zelle "Text" vom Typ TEXT.
Dort speichere ich per Formular den vom User eingegebenen Text. Der User benutzt dazu eine textarea. Wenn der User nun mal ein Absatz macht (Enter im laufenden Text), ist das zwar im Formular zu sehen, aber wenn ich den Text aus der Zelle auslesen lasse


$anfrage = "SELECT * FROM news WHERE id='$id'";
$ergebnis = mysql_query( $anfrage, $link );
$newsArr = mysql_fetch_array( $ergebnis, MYSQL_ASSOC );
print "$newsArr[Text]";


dann sind die Absätze verschwunden. Wie kann ich das verhindern ?

TomPo
2003-01-10, 16:37:30
die zeilenumbrüche müssen noch in html-code (<br>) übersetzt werden. dafür gibt es die funktion nl2br() - siehe http://www.php.net/manual/de/function.nl2br.php


$text = nl2br($newsArr[Text]);
echo $text;


viel spaß damit!

JTHawK
2003-01-10, 17:41:00
oder einfach so:


echo nl2br($newsArr[Text]);


wieder codezeilen gepspart :D

Crazy Aimer
2003-01-10, 21:27:41
aja thx ... das ist die rettung! :D

Crazy Aimer
2003-01-13, 18:18:15
hmm.. irgendwas funzt da noch nicht...
der übernimmt zwar die \n's aber macht die nicht zu "<br>"...


print "<tr><td>";
$text = smilylizer($news[Text]);
$text = nl2br($text);
echo $text;
print "<p></td></tr>";


funzt aber bei mir irgendwie nicht ... Fehler im code? *hilflos*

JTHawK
2003-01-13, 18:25:25
mit dem code is alles in ordnung (zumindest das was ich sehe) hmm - mann müsste mal den text sehen den du da ausgeben willst :D

TomPo
2003-01-13, 23:05:28
hmm... probier mal anstatt nl2br das hier:

$text = ereg_replace("(\n|\r|\r\n)", "<br />", $text);

Crazy Aimer
2003-01-14, 17:06:31
j0 hatte ich schonmal probiert, aber das geht auch nicht ... langsam zweifle ich an mir ... :\
woran kann das bloß liegen??

Also in der Datenbank ist der Text mit Absätzen gespeichert. Wenn ich den Text auslesen lasse und in einer <textarea> einfüge, sieht man die Absätze. Aber das Ersetzen funktioniert irgendwie nicht.
Hier ist mal die gesamte Schleife:

for( $x=$start; $x<=$ende; $x++ ) {
$id=$newslist[$x];
$anfrage = "SELECT * FROM news WHERE id='$id'";
$ergebnis = mysql_query( $anfrage, $GLOBALS[link] );
if( ! ergebnis )
die( "FEHLER!" );
$news = mysql_fetch_array( $ergebnis, MYSQL_ASSOC );
include("./pages/include/tabletop.inc");
print "<table border=0 cellpadding=0 cellspacing=0>";
print "<tr>";
print "<td><b>$news[Titel]</b> <span style=\"font-size:75%\">vom $news[Datum] :: $news[Uhrzeit]</span><p></td>";
print "</tr>";
print "<tr><td>";
$text = ereg_replace("(\n|\r|\r\n)", "<br />", $news[Text]);
$text = smilylizer($text);
echo $text;
print "<p></td></tr>";
print "<tr align=\"right\" valign=\"bottom\">";
print "<td>von <a href=\"mailto:$news[eMail]?subject=Return: $news[Titel]\">$news[Autor]</a></td>";
print "</tr>";
print "</table>";
include("./pages/include/tablebot.inc");
}


Die Funktion smilylizer() macht nichts weiter, außer eingebaute Smileys durch den entsprechenden Bild-Link zu ersetzen.

Ich weiß bald keinen Rat mehr. *grml*