chris: Zeilenumbruch per Enter-Taste übernehmen

Guten Morgen zusammen.

Ich habe folgendes Problem:
Ich lasse die Eingaben die ein Benutzer in ein <textarea>-Feld tätigt, in meine Datenbank speichern. Allerdings werden dabei Zeilenumbrüche nicht übernommen.

Aus bekannten Webanwendungen ist man es aber gewohnt, mit einem Druck auf die Enter-Taste in die nächste Zeile zu wechseln - und dass das Script sich das auch merkt.

Allerdings fehlt mir jeglicher Anhaltspunkt in wie fern ich mein Script/Textarea/die Eingaben verändern/aufbereiten oder überarbeiten müsste um diese Wirkung zu erzielen.

Vielen Dank mal wieder an euch,
Chris

  1. Hi!

    Was heissty, die Zeilenumbruche werden nicht uebernommen? Dann musst Du ja irgendwas angestellt haben um das zu erreichen.

    Ich glaube allerdings Du unterliegst nur einem kleinen Irrtum. Wenn Du eine Eingabe mit Zeilenumbruechen ausgibst, und Dir den Quelltext anschaust: Sind die Umbruche dann da? HTML stellt Whitespaces maximal als ein einzelnes Leerzeichen dar.
    "Hallo     Welt",
    "Hallo Welt" und
    "Hallo
     Welt"
    werden alle gleich dargestellt.

    Du muesstest gegebenenfalls also dafuer sorgen den ausgegebenen Text mit den entsprechenden HTML-Tags zu versehen. PHP stellt hierfuer z.B. Funktionen bereit.

    --
    "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."
          - T. Pratchett
    1. Hi!

      Was heissty, die Zeilenumbruche werden nicht uebernommen? Dann musst Du ja irgendwas angestellt haben um das zu erreichen.

      Ok, also mal ein paar Rahmeninformationen:

      Die Eingaben ins Textfeld werden in der Datenbank in einem BLOB-Feld gespeichert.
      Das textfeld ist ein ganz normal, standard-konformes textarea.

      Ich glaube allerdings Du unterliegst nur einem kleinen Irrtum. Wenn Du eine Eingabe mit Zeilenumbruechen ausgibst, und Dir den Quelltext anschaust: Sind die Umbruche dann da? HTML stellt Whitespaces maximal als ein einzelnes Leerzeichen dar.
      "Hallo     Welt",
      "Hallo Welt" und
      "Hallo
      Welt"
      werden alle gleich dargestellt.

      <td colspan="2">
      1 zeile
      2 zeilen
      3 zeilen
      4 zeilen
      5 zeilen
      </td>

      Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.

      Du muesstest gegebenenfalls also dafuer sorgen den ausgegebenen Text mit den entsprechenden HTML-Tags zu versehen. PHP stellt hierfuer z.B. Funktionen bereit.

      Wie heißt eine solche Funktion?!

      1. Hi,

        Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.

        das ist auch nicht seine Aufgabe, sondern Deine. Wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren - die Kodierung eines Zeilenumbruches im XHTML-Kontext lautet <br/>.

        Wie heißt eine solche Funktion?!

        "Neue Zeile zu <br/>", nur auf englisch. Da es um String-Bearbeitung geht, möchtest Du bei den String-Funktionen nachsehen.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          Ja das scheint so zu sein, im Quelltext sind die Zeilenumbrüche vorhanden, allerdings interpretiert die der Browser nicht. Dafür müsste ein <br /> her. Das den Benutzer aber am Ende jeder Zeile eintippen zu lassen, ist unschön.

          das ist auch nicht seine Aufgabe, sondern Deine. Wenn Du einen Wert in einen Kontext bringst, musst Du ihn kontextspezifisch kodieren - die Kodierung eines Zeilenumbruches im XHTML-Kontext lautet <br/>.

          Tut mir leid, aber da muss ich widersprechen:

          C.2. Empty Elements

          Include a space before the trailing / and > of empty elements, e.g. <br />, <hr /> and <img src="karen.jpg" alt="Karen" />. Also, use the minimized tag syntax for empty elements, e.g. <br />, as the alternative syntax <br></br> allowed by XML gives uncertain results in many existing user agents.

          Quelle: http://www.w3.org/TR/xhtml1/

          Wie heißt eine solche Funktion?!

          "Neue Zeile zu <br/>", nur auf englisch. Da es um String-Bearbeitung geht, möchtest Du bei den String-Funktionen nachsehen.

          Danke für den Hinweis, werde gleich nachschauen!

          1. Hi,

            Tut mir leid, aber da muss ich widersprechen:
            C.2. Empty Elements

            das sind Empfehlungen, die der Kompatibilität zu nicht-XHTML-fähigen, älteren Browsern dienen - bzw. zu großen Teilen dienten. Das Leerzeichen ist optional, wie Du der Deklaration in http://www.w3.org/TR/REC-xml/#dt-empty entnehmen kannst. Wenn es Dir aber nur darum geht: Füge es meinen vorherigen Ausführungen hinzu, dann hatten sie auch im Jahre 2000 schon Gültigkeit.

            Cheatah

            --
            X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
            X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. Hi,

              Tut mir leid, aber da muss ich widersprechen:
              C.2. Empty Elements

              das sind Empfehlungen, die der Kompatibilität zu nicht-XHTML-fähigen, älteren Browsern dienen - bzw. zu großen Teilen dienten. Das Leerzeichen ist optional, wie Du der Deklaration in http://www.w3.org/TR/REC-xml/#dt-empty entnehmen kannst. Wenn es Dir aber nur darum geht: Füge es meinen vorherigen Ausführungen hinzu, dann hatten sie auch im Jahre 2000 schon Gültigkeit.

              Cheatah

              »»

              Ja hast Recht :)

              Aber Kompatibilität ist schon wünschenswert auch  wenn der Anteil veralteter Browser verschwindend gering ist.

              Siehe dazu:

              4.6. Empty Elements

              Empty elements must either have an end tag or the start tag must end with />. For instance, <br/> or <hr></hr>. See HTML Compatibility Guidelines for information on ways to ensure this is backward compatible with HTML 4 user agents.

              CORRECT: terminated empty elements

              <br/><hr/>

              1. Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.

                Alle meine Versuche <br> gegen <br /> zu ersetzen scheitern leieder, der einfach Einsatz von str_replace funktioniert, aber wenn ich als Parameter "<br>" angebe und duch "<br />"  ersetzen lassen will, verweigert die Funktion den Dienst.

                Dabei ist es egal ob ich " verwende oder einfache '.
                Leider steht mir nur php5.2.9 zur Verfügung, sonst würde ich den Parameter is_xhtml verwenden.

                Hier mein Code:

                	  
                $content = nl2br($_POST["content"]);  
                  
                $rpl_content = str_replace("<br>", "<br />", $content);
                
                1. Hallo

                  Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.

                  Solange ich mit PHP und der Funktion nl2br arbeite, ersetzt diese Funktion die Xeilenumbrüche XHTML-konform, also als <br />. Der neue Parameter scheint eher für die HTML-Liebhaber gedacht zu sein.

                  $content = nl2br($_POST["content"]);

                  Genau das sollte nach meiner Erfahrung reichen.

                  Tschö, Auge

                  --
                  Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
                  Terry Pratchett, "Wachen! Wachen!"
                  Veranstaltungsdatenbank Vdb 0.3
                  1. Hallo

                    Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein. Dadurch bekomme ich probleme mit der konformität.

                    Solange ich mit PHP und der Funktion nl2br arbeite, ersetzt diese Funktion die Xeilenumbrüche XHTML-konform, also als <br />. Der neue Parameter scheint eher für die HTML-Liebhaber gedacht zu sein.

                    $content = nl2br($_POST["content"]);

                    Genau das sollte nach meiner Erfahrung reichen.

                    Tschö, Auge

                    Tut es auch, aus irgendeinem Grund weicht die Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen) des Firefox von der normalen Quelltextansicht ab... :/

                    Fehlersuche also umsonst, Funktion arbeitete direkt korrekt.

                    1. Hi,

                      aus irgendeinem Grund weicht die Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen) des Firefox von der normalen Quelltextansicht ab... :/

                      ja, in diesem Fall zeigt dir der Firefox nicht den "rohen" vom Server empfangenen Quellcode, sondern das, was er daraus interpretiert hat.

                      Ciao,
                       Martin

                      --
                      Wenn alle das täten, wass sie mich können,
                      käme ich gar nicht mehr zum Sitzen.
                    2. Hi,

                      Auswahl-Quelltextansicht (Text auf Website markieren -> rechtsklick -> Auswahl-Quelltext anzeigen)

                      das ist die String-Repräsentation der aus dem Quelltext erzeugten DOM-Objekte. Eine doppelte Interpretation, wo die Maximalzahl der erlaubten Interpretationen null beträgt.

                      Cheatah

                      --
                      X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                      X-Will-Answer-Email: No
                      X-Please-Search-Archive-First: Absolutely Yes
                2. Hi!

                  Dabei ist es egal ob ich " verwende oder einfache '.
                  Leider steht mir nur php5.2.9 zur Verfügung, sonst würde ich den Parameter is_xhtml verwenden.

                  Hier mein Code:

                  $content = nl2br($_POST["content"]);

                  $rpl_content = str_replace("<br>", "<br />", $content);

                    
                  Mangels gerade verfuegbarem php bin ich mal wieder etwas vage:  
                    
                  Sollte nicht seit Version 4.0.5 xhtml unterstuetzt werden? echo nltbr("/n") also <br /> ergeben?  
                    
                  Hast Du bei Deinem Experiment den slash mal escaped, als "<br //>" versucht?  
                  
                  -- 
                  "Die Diebesgilde beklagte sich darueber, dass Mumm in aller Oeffentlichkeit behauptet hatte, hinter den meisten Diebstaehlen steckten Diebe."  
                        - T. Pratchett
                  
                3. Hi,

                  Diese Variante funktioniert soweit ganz gut, allerdings fügt die Funktion ein <br> anstatt eines <br /> oder <br/> ein.

                  Wo von reden wir jetzt, nl2br?

                  Laut Manual liefert die schon seit PHP 4.0.5 <br />.

                  MfG ChrisB

                  --
                  Light travels faster than sound - that's why most people appear bright until you hear them speak.
              2. Hi,

                Aber Kompatibilität ist schon wünschenswert auch  wenn der Anteil veralteter Browser verschwindend gering ist.

                sicher doch. Aber schon vor Jahren konnten mir Fachleute, die die gleiche These vertraten, nicht mal mehr sagen, welche Clients davon betroffen sein könnten. Ich behaupte: 0 < verschwindend gering. Wer heute einen solchen (ominösen) Client einsetzt, der tut es in dem Wissen, dass er zu den aktuellen Begebenheiten nicht mehr kompatibel ist - und wahrscheinlich um genau diesen Umstand zu testen.

                Cheatah

                --
                X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
          2. Hi,

            Tut mir leid, aber da muss ich widersprechen:

            Nein, musst du nicht.

            Zu Anfang des Threads wusstest du noch nicht genug über HTML, um dir darüber im Klaren zu sein, dass einfache Zeilenumbrüche im Normalfalle nur als (kondensierter) Whitespace dargestellt werden und keinen Umbruch in der Anzeige auslösen, und hast sogar angenommen/behauptet, sie würden nicht in die Datenbank übernommen ...

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.