Zeilenumbruch aus dem Formular als <br /> in SQL speichern?

DieTa

Aktives Mitglied
Thread Starter
Dabei seit
17.09.2003
Beiträge
3.388
Reaktionspunkte
32
Servus,

ich baue gerade ein News-Formular für einen Kunden. Soweit kein Problem, nur möchte ich nicht, dass der Kunde jedesmal <br> bzw. <br /> eingeben muss, wenn er einen Zeilenvorschub/umbruch machen möchte.

Leider weiß ich nicht genau wie <textarea> das an die Datenbank übergibt - auf jeden Fall taucht ja nicht auf, was ich irgendwie aus dem String lesen und in das <br /> umwandeln könnte.

Einfach gesagt: Ich möchte in das Textarea einen Text schreiben, zwischendurch (wie hier auch) Enter drücken und das soll in der Ausgabe später genauso aussehen.

Ne Idee? :/

Ciao
Dennis
 
Gibts ja nicht... ich suche seit fast 1h - und nicht eine Minute nach dem Post finde ich die Lösung :D

PHP:
$text = $array["quelltext"];
echo nl2br($text);
 
DieTa schrieb:
Gibts ja nicht... ich suche seit fast 1h - und nicht eine Minute nach dem Post finde ich die Lösung :D
...
Das passiert öfter und basiert auf einem Muster.
In dem Augenblick, wo man aufgibt, stellt sich der Erfolg ein ;).

Zeilenumbruch aus dem Formular als <br /> in SQL speichern?
Ich würde das genau anders herum machen.
Zeilenumbruch in der Datenbank speichern und beim Auslesen und Darstellen im Browser in <br \> umwandeln.
 
Wie Du es schon gerade gemerkt hast, ist die Funktion nl2br() (Newline to Break) dafür gedacht. Das macht nicht mehr, als die Funktion str_replace(). Nur das die Parameter hier schon gesetzt sind und zwar mit str_replace("\n", "", $text). Der im Browser unsichtbare Zeilenumbruch ist "\n".

Interessant für Dich dürfte auch die Funktion htmlentities() sein. Oder aber gib' mal einfach sowas ein "Hallo zu Philip's Weblog: Windows nutzt c:\windows als Hauptordner". Dafür eignet sich dann htmlentities().
 
Möchte auch maceis' Punkt unterstützen: Alle Daten in der Datenbank so speichern, wie sie übertragen werden (ohne addslashes() geht's aber meine ich nicht). Bei der Ausgabe kannst Du dann nl2br-en und htmlentities() setzen (letzteres sollte bei vernünftig gesetzten encoding-Informationen unnötig sein, kann aber auch nicht schaden).

So bist Du flexibel zu neueren HTML-Versionen (z.B. <br> -> <br />) oder wenn Du Systembestandteile wechselst.

Bei master_p sollte das natürlich
PHP:
str_replace("\n", "<br />", $text)
heißen, nehme ich an.
 
Hallo zusammen,

erstmal vielen Dank für das Feedback hier :) Die Daten direkt im puren HTML in die DB zu schreiben ist natürlich eine feine Sache, aber wie sieht es denn aus, wenn ich die DB wieder auslese und in dem "Bearbeiten"-Textarea den Text wieder einlese? Sieht der Kunde dann nicht den HTML Code, wie es bei einem Textarea üblich ist?

Sprich: &uuml; statt ü und <br /> statt dem Zeilenumbruch?
 
wenn du den code aus dem Formular unbearbeitet in die DB schreibst, lässt sich der Text auch unbearbeitet wieder in ein Formular einfügen und bearbeiten.
Die Zeilenumbrüche werden genau so angezeigt wie eingegeben und auch alles andere...


Zum anzeigen auf der Seite kommt dann nl2br() und htmlentities() zum Zug.

So mach ich das jedenfalls immer und es klappt wunderbar :)
 
Ich glaub ich probier das morgen aus, heute gönne ich mir einen freien Tag :p

oh - ich hock ja trotzdem mit dem MBP auf der Couch und schau den Star Trek Tag auf Kabel1 auf dem Beamer :p
 
DieTa schrieb:
...
Die Daten direkt im puren HTML in die DB zu schreiben ist natürlich eine feine Sache,
...
Warum? Ich persönlich bevorzuge es, in einem TEXT Feld normalen Text zu speichern. Wenn der Text dann an einen Browser ausgeliefert wird, kann man ihn vorher soweit erforderlich aufbereiten.
DieTa schrieb:
...aber wie sieht es denn aus, wenn ich die DB wieder auslese und in dem "Bearbeiten"-Textarea den Text wieder einlese? Sieht der Kunde dann nicht den HTML Code, wie es bei einem Textarea üblich ist?
...
Wenn der Browser HTML bekommt, dann zeigt er es auch 'richtig' an. Das kann in einem textare Feld anders aussehen als im Fließtext.
Ob in der Datenbank schon HTML steht, oder normaler Text, der dann vom Webserver in HTML "umgewandelt" wird (z.B. indem newline-Zeichen durch '<br />' ersetzt werden) kann der Brwoser nicht unterscheiden.
 
Zurück
Oben Unten