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

Dieses Thema im Forum "Datenbanksysteme für das Web" wurde erstellt von DieTa, 02.10.2006.

  1. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    MacUser seit:
    17.09.2003
    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
     
  2. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    MacUser seit:
    17.09.2003
    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);
     
  3. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    Das passiert öfter und basiert auf einem Muster.
    In dem Augenblick, wo man aufgibt, stellt sich der Erfolg ein ;).

    Ich würde das genau anders herum machen.
    Zeilenumbruch in der Datenbank speichern und beim Auslesen und Darstellen im Browser in <br \> umwandeln.
     
  4. master_p

    master_p MacUser Mitglied

    Beiträge:
    1.065
    Zustimmungen:
    23
    MacUser seit:
    31.01.2005
    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().
     
  5. Jakob

    Jakob MacUser Mitglied

    Beiträge:
    1.067
    Zustimmungen:
    21
    MacUser seit:
    05.01.2004
    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.
     
  6. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    MacUser seit:
    17.09.2003
    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?
     
  7. simusch

    simusch MacUser Mitglied

    Beiträge:
    2.221
    Zustimmungen:
    186
    MacUser seit:
    27.09.2004
    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 :)
     
  8. DieTa

    DieTa Thread Starter MacUser Mitglied

    Beiträge:
    3.278
    Zustimmungen:
    30
    MacUser seit:
    17.09.2003
    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
     
  9. maceis

    maceis MacUser Mitglied

    Beiträge:
    16.645
    Zustimmungen:
    596
    MacUser seit:
    24.09.2003
    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.
    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.
     
Die Seite wird geladen...