Zeilenumbrüche bei SQL-Abfrage
Steffi
- datenbank
Hallo,
ich habe ein ganz einfaches Gästebuch-Skript in PHP geschrieben: die Inhalte eines <TEXTAREA>-Feldes werden in eine Spalte einer SQL-Datenbank eingetragen... und später mit echo $row[text] wieder ausgelesen.
Nun habe ich aber folgendes Problem: Wenn ein User in seinem Eintrag ein paar Zeilen frei lässt, dann erscheint dies hinterher nicht in der Ausgabe. Was habe ich übersehen?
1000 x Danke,
Steffi
Hallo Steffi,
dieses Problem wurde hier die letzten 10 Tage bestimmt dreimal diskutiert und erklärt...
Wenn die Daten aus der Textarea ankommen beim Script, dann musst Du abhängig von get_magic_quotes_gpc() die Maskierungen wieder entfernen. Wenn Du das getan hast, maskierst Du den Text mittels mysql_real_escape_string() und speicherst ihn ab in der DB.
Beim Wiederholen sind die MySQL-Maskierungen verschwunden, denn sie galten nur für die Textschnittstelle der DB und wurden dort wieder entfernt. In der Tabelle stehen also nur die Rohdaten.
Diese verpackst Du zum Anzeigen im einfachen HTML-Kontext mittels nl2br(htmlentities($text,ENT_QUOTES)).
Allerdings gehen in der Browseranzeige nun noch Leerzeichen verloren, die vielleicht eingegeben wurden, da HTML mit Leerzeichen eben besonders verfährt. Die müsstest Du ggf. noch mittels str_replace() gegen austauschen.
Wenn Du in der Textarea wiedergibst, brauchst Du nur htmlentities() zu benutzen. Das gleiche gilt für die Anzeige zwischen <pre> und </pre>
LG
Chris
hi,
Nun habe ich aber folgendes Problem: Wenn ein User in seinem Eintrag ein paar Zeilen frei lässt, dann erscheint dies hinterher nicht in der Ausgabe. Was habe ich übersehen?
Dass HTML sich für einfache Zeilenumbrüche im Normalfall nicht interessiert.
gruß,
wahsaga