MisterJ: Formular: String mit Leerzeichen in Variable schreiben

Hallo Liebe Leute

Ich möchte in einem Formular mehrere Eingaben tätigen, die durch Kommas und Leerzeichen getrennt werden sollen. Ich weiss, dass man das nicht machen sollte sondern für jeden wert ein eigenes Feld, trotzdem möchte ich aber den ganzen String per post übergeben und den gesamten String in die DB schreiben. Nun wird aber nur der erste Wert bzw. alle Zeichen bis zum ersten Leerschlag übergeben :(
Hab gegoogelt, diverse Foren durchsucht, aber habe leider nichts gefunden.

Könnt Ihr mir vielleicht helfen??

Danke im Voraus,

mFg Mr.J

  1. @@MisterJ:

    Könnt Ihr mir vielleicht helfen??

    Nein, vermutlich nicht. Warum, hast du bereits in den Tips für Fragende gelesen.

    Live long and prosper,
    Gunnar

    --
    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
    1. Nein, vermutlich nicht. Warum, hast du bereits in den Tips für Fragende gelesen.

      Welche Tips für Fragende, was steht dort?
      Hättest du einen Link?

      mFg mR.J

      1. @@MisterJ:

        Welche Tips für Fragende,

        Na die in der Charta.

        Frag jetzt nicht, welche Charta.

        Hättest du einen Link?

        Ja, und du auch.

        Live long and prosper,
        Gunnar

        --
        Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
        1. Na die in der Charta.

          Ach die, ja hab ich gelesen :P
          Hab ich gegen irgendwelche Vorschriften verstossen oder so?
          Ich dachte, Quellcode wäre nicht nötig, aber hier:

          Im Formular:
          <input name="hobbys" type="text" size="40" maxlength="256">

          Ausgabe:
          $hobbys = $_POST['hobbys'];
          //mehr code & Tabelle
          <td colspan='2'><input type='text' value=".$hobbys."&nbsp; disabled='disabled' size='40'></td>

          In der Ausgabe steht dann nur der Text bis zum ersten Leerschlag-.-

          1. Mahlzeit MisterJ,

            Ach die, ja hab ich gelesen :P

            Komisch, dass Du sie dann nicht beachtest.

            Hab ich gegen irgendwelche Vorschriften verstossen oder so?

            Nein. Du beschreibst lediglich Dein Problem nicht so, dass man Dir helfen kann und lässt uns auch nicht - z.B. durch Quellcode, Links oder Beschreibungen - an Deiner Fehlersuche und Deinen bisherigen Erkenntnisschritten teilhaben.

            <input name="hobbys" type="text" size="40" maxlength="256">

            Ausgabe:
            $hobbys = $_POST['hobbys'];
            //mehr code & Tabelle
            <td colspan='2'><input type='text' value=".$hobbys."&nbsp; disabled='disabled' size='40'></td>

            Ich vermute, dass es sich dabei um eine Ausgabe in PHP handelt (dazu hast Du NICHTS geschrieben)? Dann schau Dir doch bitte mal den Quelltext dessen an, was der Browser vom Webserver (und damit vom PHP-Interpreter) bekommt: allein dieser ist relevant und darin wirst Du die Lösung Deines Problems finden.

            In der Ausgabe steht dann nur der Text bis zum ersten Leerschlag-.-

            Was auch immer ein "Leerschlag" ist ... ;-)

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Tag

              Komisch, dass Du sie dann nicht beachtest.

              Sorry dass ich sie gelesen und nicht auswendig gelernt habe.

              Nein. Du beschreibst lediglich Dein Problem nicht so, dass man Dir helfen kann und lässt uns auch nicht - z.B. durch Quellcode, Links oder Beschreibungen - an Deiner Fehlersuche und Deinen bisherigen Erkenntnisschritten teilhaben.

              <input name="hobbys" type="text" size="40" maxlength="256">

              Ausgabe:
              $hobbys = $_POST['hobbys'];
              //mehr code & Tabelle
              <td colspan='2'><input type='text' value=".$hobbys."&nbsp; disabled='disabled' size='40'></td>

              Ich vermute, dass es sich dabei um eine Ausgabe in PHP handelt (dazu hast Du NICHTS geschrieben)?

              Stimmt. Dann sage ich es jetzt: Die Ausgabe wird mit PHP ausgegeben (siehe oben, im Quellcode)

              »»Dann schau Dir doch bitte mal den Quelltext dessen an, was der Browser vom Webserver (und damit vom PHP-Interpreter) bekommt: allein dieser ist relevant und darin wirst Du die Lösung Deines Problems finden.
              Gute Idee. Hier, das hat er im Quellcode stehen:
              <input type='text' value=fussball, volleyball&nbsp; disabled='disabled' size='40'>
              Aber das Volleyball gibt er leider nicht aus. Nur "fussball,"
              -.-

              Was auch immer ein "Leerschlag" ist ... ;-)

              "Das Leerzeichen (korrekte Bezeichnung laut Duden: Leerschritt, bes. schweiz. LEERSCHLAG) dient der Abgrenzung von Wörtern(...)"
              aus: "http://de.wikipedia.org/wiki/Leerzeichen"

              Danke für die Antwort,

              mFg: mRJ

              1. @@MisterJ:

                Gute Idee. Hier, das hat er im Quellcode stehen:
                <input type='text' value=fussball, volleyball&nbsp; disabled='disabled' size='40'>
                Aber das Volleyball gibt er leider nicht aus. Nur "fussball,"

                Eben das erkennt der Browser aus deinem fehlerhaften HTML als Wert des 'value'-Attributs.

                „Standardmäßig verlangt SGML, dass alle Attributwerte entweder von doppelten Anführungszeichen (ASCII dezimal 34) oder einfachen Anführungszeichen (ASCII dezimal 39) begrenzt werden. […] In bestimmten Fällen können Autoren den Wert eines Attributs ohne jegliche Anführungszeichen angeben; der Attributwert darf nur Buchstaben (a-z und A-Z), Ziffern (0-9), Bindestriche (ASCII dezimal 45), Punkte (ASCII dezimal 46), Unterstriche (ASCII dezimal 95) und Doppelpunkte (ASCII dezimal 58) enthalten. Wir empfehlen, Anführungszeichen auch dann zu verwenden, wenn es möglich ist, sie wegzulassen.“ [HTML401 §3.2.2]

                Das hätte dir der Validator auch gesagt.

                Live long and prosper,
                Gunnar

                --
                Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
              2. Mahlzeit MisterJ,

                »»Dann schau Dir doch bitte mal den Quelltext dessen an, was der Browser vom Webserver (und damit vom PHP-Interpreter) bekommt: allein dieser ist relevant und darin wirst Du die Lösung Deines Problems finden.
                Gute Idee.

                Die einzig hilfreiche übrigens. Kannst ja nächstes mal direkt machen ... :-)

                Hier, das hat er im Quellcode stehen:
                <input type='text' value=fussball, volleyball&nbsp; disabled='disabled' size='40'>
                Aber das Volleyball gibt er leider nicht aus. Nur "fussball,"

                Ist ja auch vollkommen korrekt. Genau das soll der Browser machen. Spiel doch mal HTML-Parser:

                <input

                Aha, ich soll ein Eingabefeld rendern!

                type='text'

                Aha, es soll vom Typ "text" sein!

                value=fussball,

                Aha, es soll den Wert "fussball," haben!

                volleyball&nbsp;

                Häh? Das attribut "volleyball&nbsp;" kenne ich nicht - also ignoriere ich es.

                disabled='disabled'

                Aha, das Eingabefeld soll also "ausgeschaltet" sein!

                size='40'>

                Aha, es soll also 40 Zeichen lang sein und das war's dann!

                <render />

                Fertig!

                Damit wäre mal wieder bewiesen, dass es nicht nur bei XHTML zwingend NOTWENDIG ist, Attributwerte in Anführungszeichen zu schreiben, sondern auch bei herkömmlichen HTML enorm HILFREICH ist, dies zu tun.

                -.-

                Was auch immer das bedeuten mag ...

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                1. @@Gunnar Bittersmann
                  @@EKKi

                  „Standardmäßig verlangt SGML, dass alle Attributwerte entweder von doppelten Anführungszeichen (ASCII dezimal 34) oder einfachen Anführungszeichen (ASCII dezimal 39) begrenzt werden. […] In bestimmten Fällen können Autoren den Wert eines Attributs ohne jegliche Anführungszeichen angeben; der Attributwert darf nur Buchstaben (a-z und A-Z), Ziffern (0-9), Bindestriche (ASCII dezimal 45), Punkte (ASCII dezimal 46), Unterstriche (ASCII dezimal 95) und Doppelpunkte (ASCII dezimal 58) enthalten. Wir empfehlen, Anführungszeichen auch dann zu verwenden, wenn es möglich ist, sie wegzulassen.“ [HTML401 §3.2.2]

                  Hier seh ich zwar vor lauter Bäumen den Wald fast nicht mehr, trotzdem danke :)

                  Das hätte dir der Validator auch gesagt.

                  Ja, aber der hätte mir noch mehr gesagt. Weil mein Code noch voller Fehler steckt...

                  Die einzig hilfreiche übrigens. Kannst ja nächstes mal direkt machen ... :-)

                  Nochmals gute Idee^^

                  Ist ja auch vollkommen korrekt. Genau das soll der Browser machen. Spiel doch mal HTML-Parser:

                  Wieder eine gute Idee :)

                  volleyball&nbsp;

                  Häh? Das attribut "volleyball&nbsp;" kenne ich nicht - also ignoriere ich es.

                  Jetzt, wo du s sagst....

                  Damit wäre mal wieder bewiesen, dass es nicht nur bei XHTML zwingend NOTWENDIG ist, Attributwerte in Anführungszeichen zu schreiben, sondern auch bei herkömmlichen HTML enorm HILFREICH ist, dies zu tun.

                  Hab ich übersehen, da ich ja die Anführungsstiche geschriben habe. Nur galten die nicht für html, sondern nur für php...

                  Achso, jetzt noch der richtige Code:
                  <input type='text' value='".$hobbys."' disabled='disabled' size='40'>

                  Und siehe da: Es klappt :)

                  -.-

                  Was auch immer das bedeuten mag ...

                  Denk dir was aus^^

                  Vielen Dank Leute :D

                  mFg MrJ

                  1. @@MisterJ:

                    Hier seh ich zwar vor lauter Bäumen den Wald fast nicht mehr, trotzdem danke :)

                    [MI] vermittelt das Grundverständnis, was Elemente, Attribute und Attributwerte sind.

                    Ja, aber der [Validator] hätte mir noch mehr gesagt. Weil mein Code noch voller Fehler steckt...

                    In jedem von diesen steckt ein neues potentielles Problem.

                    Live long and prosper,
                    Gunnar

                    --
                    Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
                    1. @@MisterJ:

                      Hier seh ich zwar vor lauter Bäumen den Wald fast nicht mehr, trotzdem danke :)

                      [MI] vermittelt das Grundverständnis, was Elemente, Attribute und Attributwerte sind.

                      Naja... Ist aber ziemlch hoch geschriben.

                      Ja, aber der [Validator] hätte mir noch mehr gesagt. Weil mein Code noch voller Fehler steckt...
                      In jedem von diesen steckt ein neues potentielles Problem.

                      Gut möglich. Aber immer schön alles der Reihe nach: Zuerst die Hauptproblematik, erst danach die Details

                      Naja vielen Dank

                      Hat mir geholfen.

                      1. Mahlzeit MisterJ,

                        In jedem von diesen steckt ein neues potentielles Problem.
                        Gut möglich. Aber immer schön alles der Reihe nach: Zuerst die Hauptproblematik, erst danach die Details

                        Richtig. Hauptproblematik: der HTML-Code ist fehlerhaft. Lösung: Fehler beseitigen ... :-)

                        MfG,
                        EKKi

                        --
                        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                  2. Mahlzeit MisterJ,

                    Das hätte dir der Validator auch gesagt.
                    Ja, aber der hätte mir noch mehr gesagt. Weil mein Code noch voller Fehler steckt...

                    Na, dann hoffe ich mal, dass das Motivation genug ist ... ;-)

                    Achso, jetzt noch der richtige Code:
                    <input type='text' value='".$hobbys."' disabled='disabled' size='40'>

                    Falsch. Der "richtige" Code wäre folgender:

                    $foo = sprintf('<input type="text" value="%s" disabled="disabled" size="40">', htmlspecialchars($_POST['hobbys']));

                    Warum?

                    1. Durchgehend einheitliche Verwendung von verschiedenen Anführungszeichen für verschiedene Sprachen/Funktionalitäten o.ä.

                    2. sprintf() zeigt übersichtlicher, wie der String, der zusammengesetzt wird, eigentlich tatsächlich als Ganzes aussieht, ohne dass man sich zwischen 1000en von Anführungszeichen und Variablen verliert.

                    3. htmlspecialchars() sorgt dafür, dass das, was ausgegeben wird, dem Kontext entsprechend behandelt wird - in diesem Fall HTML. So werden u.a. alle " in &quot; verwandelt, was innerhalb des "value"-Attribut eines <input>-Elements absolut notwendig ist, sonst hast Du wieder die gleiche Grütze wie vorher.

                    4. Die direkte Verwendung von $_POST[] sorgt dafür, dass man eindeutlich erkennen kann, woher der Wert stammt, der dort in dem <input>-Element ausgegeben wird.

                    -.-

                    Was auch immer das bedeuten mag ...
                    Denk dir was aus^^

                    echo 'Parse error in line '.__LINE__;

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
                2. Hallo EKKi,

                  -.-
                  Was auch immer das bedeuten mag ...

                  K.

                  So long,
                   Martin

                  --
                  Wer im Steinhaus sitzt, soll nicht mit Gläsern werfen.
                  1. Mahlzeit Der Martin,

                    K.

                    ... --- ... --- .-.-.- .-.-.- .-.-.-

                    MfG,
                    EKKi

                    --
                    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              3. Hi,

                Komisch, dass Du sie dann nicht beachtest.
                Sorry dass ich sie gelesen und nicht auswendig gelernt habe.

                Es geht nicht ums "Auswendiglernen", sondern ums *Begreifen*, warum es wichtig ist, zu einem Problem ein Mindestmasz an relevanten Informationen zu liefern, mit denen dieses nachvollziehbar wird.

                MfG ChrisB

                --
                "The Internet: Technological marvel of marvels - but if you don't know *what* you're lookin' for on the Internet, it is nothing but a time-sucking vortex from hell."