Benutzerdefinierte Suche

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

  1. DieTa

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    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
     
    DieTa, 02.10.2006
  2. DieTa

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    32
    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, 02.10.2006
  3. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    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.
     
    maceis, 02.10.2006
  4. master_p

    master_pMacUser Mitglied

    Mitglied seit:
    31.01.2005
    Beiträge:
    1.063
    Zustimmungen:
    23
    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().
     
    master_p, 02.10.2006
  5. Jakob

    JakobMacUser Mitglied

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

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    32
    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?
     
    DieTa, 03.10.2006
  7. simusch

    simuschMacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.239
    Zustimmungen:
    188
    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 :)
     
    simusch, 03.10.2006
  8. DieTa

    DieTa Thread StarterMacUser Mitglied

    Mitglied seit:
    17.09.2003
    Beiträge:
    3.308
    Zustimmungen:
    32
    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, 03.10.2006
  9. maceis

    maceisMacUser Mitglied

    Mitglied seit:
    24.09.2003
    Beiträge:
    16.696
    Zustimmungen:
    602
    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.
     
    maceis, 03.10.2006
Die Seite wird geladen...