Zeilenumbruch in Datenbank schreiben

uafsc

Erfahrenes Mitglied
Hallo. Ich habe ein gewöhnliches HTML-Textfeld in einem Formular, dessen Eingabe ich beim Senden mit PHP auslese und in eine MySQL Datenbank schreibe. Vor dem Schreiben in die Datenbank wende ich die Funktionen htmlspecialchars,mysql_real_escape_string & trim auf die POST-Variablen an. Meine Frage nun: Wie kann ich realisieren, dass Zeilenumbrüche, die von der Tastatur aus kommen mit in die Datenbank geschrieben werden? Eine Möglichkeit wäre, diese automatisch jeweils in "<br />" umzuwandeln, jedoch würde dies den Laien-Benutzer irritieren und er würde sie evtl. löschen.
Das Feld in der DB ist vom Typ Text.
 
hmmm bringt mich um einiges weiter, danke! ..Aber wenn der Besucher nun diesen geschriebenen Text bearbeiten will, werden ja lauter "<br/>"s auftauchen und ihn verwirren, kann dies irgendwie auch verhindert bzw. umgangen werden?
 
Du kannst nl2br ja auch nur bei der Ausgabe anwenden. Also speicherst du den Text in der Datenbank, wie ihn der user eingibt und bei der ausgabe jagst du ihn durch nl2br.
 
Dann schreib den Text so in die Datenbank, wie er kommt, denn Zeilenumbrüche werden mitgespeichert und wende die Funktion bei der Ausgabe an, wo du Umbrüche machen willst bzw musst.

EDIT: Mist, da war der d_b schneller ^^
 
Normalerweise werden die Zeilenumbrüche von der Textarea mit in die Datenbank geschrieben. Wenn der Benutzer die Daten verändern soll, werden die Daten einfach so aus der Datenbank geladen und in einer Textarea angezeigt. Da sollten die Zeilenümbrüche dann wie beim eingeben aussehen.
Wenn der Text dann in HTML ausgegeben werden soll wendet man die funktion nl2br() an, die die Zeilenumbrüche durch <br /> ersetzt. Dann siehts nicht nur im Quelltext, sondern auch im Browser richtig aus.

EDIT: Äh... ja genau. :D
 
Hi,

Vor dem Schreiben in die Datenbank wende ich die Funktionen htmlspecialchars,mysql_real_escape_string & trim auf die POST-Variablen an.

Sonst nix? ;)
Im Ernst: Nicht wahllos mit allem drüberbügeln, was das Manual hergibt. htmlspecialchars ist für die Ausgabe in HTML gedacht. &gt;, &lt;, &quot;,... haben in der DB nichts verloren. Für MySQL nur mysql_real_escape_string, bzw. <type>val-Funktionen, je nach erwartetem Typ. Für die Ausgabe an den Browser nimmst Du doch auch nicht mysql_real_escape_string, oder?

LG
 
also bei DB EIngaben die vom User kommen, mach ich immer folgendes:

htmlentities(addslashes(trim($string)));

das gewährleistet das keine überflüssigen Leerzeichen vorhanden sind, dass die HTML Tags, etc entschärft werden und alle Slashes, und An-/Ausführungszeichen escaped werden.

damit ist alles abgedeckt ;)
 
Zurück