Togira_Ikonoka: Leerzeichen " " in Formularen

Hallo.
Ich beschäftige mich zur Zeit mit der Eingabe über Formulare und Php-Scripts in Datenbanken. Leider muss ich feststellen, dass Leerzeichen (" ", SPACE, ASCII(32)) am Zeilenanfang von mehrzeiligen Eingabefeldern nicht übergeben/interpretiert werden.

Wie kann ich erreichen, dass diese 'leeren' Zeichen(ketten) auch übernommen werden?

Vielen Dank schon im Voraus an alle, die sich darüber Gedanken machen.

mfg,
TI

  1. http://www.css4you.de/white-space.html

    Glaub das geht in die Richtung, weiss jetzt nur net, ob das auch für Formularfelder gilt.

    Bei <textarea wrap='physical'> </textarea> nimmt er z.B. alle Umschläge ect. mit, glaube auch alle Leerzeichen.

    Oder meinst du Inputs als Eingabefelder?

    1. http://www.css4you.de/white-space.html

      Glaub das geht in die Richtung, weiss jetzt nur net, ob das auch für Formularfelder gilt.

      Bei <textarea wrap='physical'> </textarea> nimmt er z.B. alle Umschläge ect. mit, glaube auch alle Leerzeichen.

      Oder meinst du Inputs als Eingabefelder?

      Ja, ganz genau.
      Vielen Dank, das hilft mir sehr weiter.

      Aber deine zweite Frage versteh ich nicht. Vielleicht kannst du das nochmal genauer erklären?

      mfg,
      TI

  2. was dein browser?

    firefox machts. sollte eigentlich auch so kein problem sein. verarbeitest du den $_POST irgendwie vorher, bevor du feststellst, dass da keine spaces drin sind?

    gruß

    m.

    Wie kann ich erreichen, dass diese 'leeren' Zeichen(ketten) auch übernommen werden?

    1. was dein browser?

      firefox machts. sollte eigentlich auch so kein problem sein. verarbeitest du den $_POST irgendwie vorher, bevor du feststellst, dass da keine spaces drin sind?

      gruß

      m.

      Wie kann ich erreichen, dass diese 'leeren' Zeichen(ketten) auch übernommen werden?

      Also, ich benutze Maxthon MyIE.

      Tja, und zur verarbeitung:
      1.Bevor dir Einträge in eine SQL-Datenbank gespeichert werden, führe ich den Befehl nl2br durch.
      2.Dann werden die Einträge zwar noch gespeichert und wieder ausgelesen, aber das Problem mit den Leerzeichen am Zeilenanfang besteht schon vor dem Speichern (hab ich selbst überprüft!)

      Trotzde vielen Dank für die rasche Hilfe

      mfg,
      TI

      1. Wie kann ich erreichen, dass diese 'leeren' Zeichen(ketten) auch übernommen werden?

        Nur so eine Frage: Bist du sicher, dass die Leerzeichen tatsächlich verschwinden (und nicht einfach nur im _Browser_ nicht angezeigt werden - denn der ignoriert grundsätzlich Leerzeichen, die auf einen Zeilenumbruch folgen)?
        Schonmal in den Browser-Quelltext geschaut?
        Oder direkt den übertragenen Inhalt des Textarea-Felds zwischen <pre></pre> - Tags gesetzt und ausgegeben?

        Freundliche Grüße,
        Sancho

        1. Wie kann ich erreichen, dass diese 'leeren' Zeichen(ketten) auch übernommen werden?

          Nur so eine Frage: Bist du sicher, dass die Leerzeichen tatsächlich verschwinden (und nicht einfach nur im _Browser_ nicht angezeigt werden - denn der ignoriert grundsätzlich Leerzeichen, die auf einen Zeilenumbruch folgen)?
          Schonmal in den Browser-Quelltext geschaut?
          Oder direkt den übertragenen Inhalt des Textarea-Felds zwischen <pre></pre> - Tags gesetzt und ausgegeben?

          Freundliche Grüße,
          Sancho

          Vielen Dank, werde ich gerade mal machen.
          Also, das ist wirklich interessant: Im Quelltext sind die Leerzeichen alle noch da.

          Gut zu wissen.

          Und mit dem <pre>-Tag geht es auch... jetzt stellt sich allerdings die Frage, warum es nicht mit

          <p> und CSS white-space: pre;

          funktioniert?

          Außerdem sollt der Zeilenumbruch doch automatisch erfolgen...

          mfg,
          TI

          1. Hallo,

            Und mit dem <pre>-Tag geht es auch... jetzt stellt sich allerdings die Frage, warum es nicht mit
                  <p> und CSS white-space: pre;
            funktioniert?

            vielleicht weil du mit dem Internet Explorer testest, der white-space:pre nicht unterstützt?

            Außerdem sollt der Zeilenumbruch doch automatisch erfolgen...

            Dann wird's schwierig. Bleibt höchstens noch, die unmittelbar auf einen Zeilenumbruch folgenden Blanks durch &nbsp; zu ersetzen. Schön ist das nicht, und es hat auch den Nachteil, dass nach einem automatischen Zeilenumbruch durch den Browser der Text in der nächsten Zeile trotzdem wieder am linken Rand beginnt.
            Ich weiß, frei eingegebenen Text mit CSS sauber zu formatieren, ist sehr schwierig bis unmöglich.

            Vielleicht möchtest du doch nach einem grundsätzlich anderen Ansatz suchen?

            Ciao,
             Martin

            --
            Computer funktionieren grundsätzlich nicht richtig.
            Wenn doch, hast du etwas falsch gemacht.
            1. Hallo Martin.

              vielleicht weil du mit dem Internet Explorer testest, der white-space:pre nicht unterstützt?

              <del>nicht</del><ins>erst ab Version 5.5</ins>

              Einen schönen Montag noch.

              Gruß, Ashura

              --
              sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
              „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
              [HTML Design Constraints: Logical Markup]
              1. Hallo Ashura,

                vielleicht weil du mit dem Internet Explorer testest, der white-space:pre nicht unterstützt?
                <del>nicht</del><ins>erst ab Version 5.5</ins>

                nein, da hast du nicht aufmerksam gelesen. Im verlinkten SELFHTML-Abschnitt steht, dass der IE white-space:nowrap; ab Version 5.5 unterstützt, aber white-space:pre; dagegen gar nicht.
                Zumindest die Aussage zum 5.5er habe ich eben nochmal nachgeprüft: Sie stimmt. Dass auch der 6er kein white-space:pre; beachtet, glaube ich jetzt einfach mal.

                Ciao,
                 Martin

                --
                Rizinus hat sich angeblich als sehr gutes Mittel gegen Husten bewährt.
                1. Hallo Martin.

                  Dass auch der 6er kein white-space:pre; beachtet, glaube ich jetzt einfach mal.

                  Nein, gerade dieser kann es. Meine Aussage war also nicht ganz falsch.

                  Einen schönen Montag noch.

                  Gruß, Ashura

                  --
                  sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
                  „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
                  [HTML Design Constraints: Logical Markup]
  3. Ok, so weit der Stand der Dinge:

    Schuld am verschwinden von Leerzeichen in meinem Text ist die CSS-Option: white-space:normal;

    Das wirft aber neue Fragen auf:

    Wenn ich die alten SQL-Einträge mit dem neuen, geänderten Anzeigescript auslese, bleiben die Leerzeichen trotzdem verschwunden.
    Also müssen sie bereits bei der Eingabe entfernt worden sein.
    Aber wie kann ich das unterbinden?

    Einfach "white-space:normal;" in meinen <textarea>-Tag setzen?

    mfg,
    TI

    1. hi,

      Wenn ich die alten SQL-Einträge mit dem neuen, geänderten Anzeigescript auslese, bleiben die Leerzeichen trotzdem verschwunden.

      Und wie hast du das jetzt wieder festgestellt?
      Du hasat hoffentlich nicht wieder aus (d)einer Ahnungslosigkeit von HTML falsch gesclossen, sondern wirklich in den Quellcode geschaut?

      Also müssen sie bereits bei der Eingabe entfernt worden sein.

      Wer hat die Einträge eingefügt - du/dein Script?
      Wenn ja, dann hättest - sofern es überhaupt der Fall ist - du/dein Script sie entfernt.

      Aber wie kann ich das unterbinden?

      Du/dein Script sollte es im Zweifelsfalle unterlassen, Dinge zu tun, die du nicht willst.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
  4. Hallo Leute,
    ich habe selbst eine Lösung für das Problem gefunden.
    Jetzt würde mich aber dennoch interessieren, ob das auf Dauer ressourcenfreundlich oder einfach pure Verschwendung ist.

    Fakt ist:
    1.Im Quelltext sind die Leerstellen " " noch zu sehen.
    2.In <p>-Tags können sie nicht von allesn Browsern angezeigt werden.
    3.In <pre>-Tags habe ich endlose horizontale Scrollbalken.
    4.Der Text ist in einer SQL_Datenbank gespeichert.

    Lösung:
    a)Die Daten werden ausgelesen.
    b)Mit replace_str() werden alle Leerzeichen durch "&nbsp;&shy;" ersetzt.
    Folge: Leerstellen bleiben durch Zwang erhalten ("&nbsp;"), es kann aber bei bedarf jederzeit die Zeile umbrochen werden ("&shy;"), das gilt natürlich nur für <p>-Tags.
    c)Ausgabe im <p>-Tag!

    mfg,
    bitte screibt mir ein Kommentar dazu,
    TI

    1. Hi,

      b)Mit replace_str() werden alle Leerzeichen durch "&nbsp;&shy;" ersetzt.
      Folge: Leerstellen bleiben durch Zwang erhalten ("&nbsp;"), es kann aber bei bedarf jederzeit die Zeile umbrochen werden ("&shy;"), das gilt natürlich nur für <p>-Tags.

      Das ist sehr ungünstig. &shy; funktioniert nicht in allen Browsern und sorgt dafür, dass entweder gar nicht umgebrochen werden kann oder überall ein "-" eingefügt wird.
      Gehe das doch etwas intelligenter an und ersetze lediglich Leerzeichen am Anfang und ggfls. von je zwei hintereinander stehende Leerzeichen nur eines durch &nbsp;.

      freundliche Grüße
      Ingo