Problem mit "multiple option select"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit "multiple option select"

    Also ich habe ein Formular gemacht mit multiplen option! Wenn ich dann mehrer auswähle und über die Post-Methode übertrage und insert in meine DB mach hab ich das Problem das ich nicht mehrere Werte drin hab sondern nur einen. Die Datenbank Variable ist Tinytext! Also geht es überhaupt multiple Options in Mysql einzufügen und wenn ja wie? Was mach ich falsch?
    M.f.G. Tragon

  • #2
    Bei einer multiplen Auswahlliste muß aus der Formular-Variablen ein Array gemacht werden, dann kannst du alle ausgewählten Werte auslesen:

    Beispiel:
    PHP-Code:
    <form method="post">
    <select name="select[]" size="4" multiple>
    <option>eins</option>
    <option>zwei</option>
    <option>drei</option>
    <option>vier</option>
    </select>
    <input type="submit" value="Und ab">
    </form>
    <?

    $auswahlliste = $HTTP_POST_VARS["select"];
    // Achtung, ab PHP 4.1 gilt $_POST statt $HTTP_POST_VARS

    echo "Die von Ihnen ausgewählten Werte:<br><b>";

    for ($i=0;$i<sizeof($auswahlliste);++$i) echo "$auswahlliste[$i]<br>";
    ?>
    Immer erst mal gucken, ob Benzin im Tank ist ...

    Kommentar


    • #3
      Sorry das ich so dumm Fragen muß aber [] müssen in select aber dann nachher nicht mehr bei der Übertragung?

      Bei mir kommt folgender Fehler wenn ich es so mache:
      Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /is/ on line 35
      Woran liegt es? Könnte es daran liegen das ich den Php.code direkt in der Mysql Insert Values( ) Anweisung ausführe?
      M.f.G. Tragon

      Kommentar


      • #4
        Kontrolliere die Schreibweise der Variable einerseits im Formular und andererseits im Skript, die den Array abarbeitet.
        Groß- Kleinschreibung?
        Der Variablenname darf nicht mit einer Zahl beginnen wie etwa $4YOU
        Wie lautet die Variable?

        Im Form ist Vraiable mit [] anzugeben, im Skript, welches diese Vraiable abarbeitet OHNE []

        PHP-Code:
        <form method="post">
           <select name="myvariable[]" size="4" multiple>
              <option>eins</option>
              <option>zwei</option>
              <option>drei</option>
              <option>vier</option>
           </select>
           <input type="submit" value="Und ab">
        </form>
        <?

        for ($i=0;$i<sizeof($myvariable);++$i) echo "$myvariable[$i]<br>";
        ?>
        Zuletzt geändert von hand; 08.06.2002, 09:51.

        Kommentar


        • #5
          Hoffentklich verstehe ich das richtig es müßte so ja funktionieren,tut es aber leider nicht. Also den "for" hab ich nachdem ich auf submit clicke auf der nächsten Seite. Und dort in INSERT INTO tabelle() Values( '
          for ($i=0;$i<sizeof($myvariable);++$i) echo "$myvariable[$i]<br>";')

          Jetzt kommt dann ein Parser error? Ich weiß leider net woran des liegen könnte? Kann man es so nicht in einen Insert-Befehl schreiben??
          M.f.G. Tragon

          Kommentar


          • #6
            PHP-Code:
            for ($i=0;$i<sizeof($myvariable);++$i) {
               
            // Keine Ahnung was Du da noch so alles machst
               // Keine Ahnung, ob Du je gesetztem Optionsfeld einen INSERT benötigtst   
               
            INSERT INTO tabelle Values''.....); 

            Kommentar


            • #7
              Also ich will einfach den/die kompletten Werte markiert worden sind einfügen z.B. in tabelle1 und das markierte ALLES in die Option Spalte.Direkt geht es ja nicht, sprich so:??
              INSERT INTO tabelle Values( ' for ($i=0;$i<sizeof($myvariable);++$i) ;' .); ????
              M.f.G. Tragon

              Kommentar


              • #8
                Ich hab wirklich keinen blassen Schimmer was Du willst, aber vielleicht hilft Dir das ein wenig weiter:

                PHP-Code:
                $option "Optionen: ";
                for (
                $i=0;$i<sizeof($myvariable);++$i) {
                   
                $optionen .= $myvariable[$i];
                   
                $optionen .= " ";
                }
                // Im Feld $optionen steht jetzt beispielsweise
                //   "Optionen: eins drei " oder
                //   "Optionen: drei " oder
                //   "Optionen: eins zwei vier " usf. 

                Kommentar


                • #9
                  Es sollte so sein wenn es geht, dass man in dem Formular eine oder mehre optinonen auswählt
                  --------------------------------------------------------------------------------

                  <form method="post">
                  <select name="select[]" size="4" multiple>
                  <option>eins</option>
                  <option>zwei</option>
                  <option>drei</option>
                  <option>vier</option>
                  </select>
                  <input type="submit" value="Und ab">
                  </form>
                  Dann es auf die Folgeseite übermittelt und man es dann (dachte ich zumindest) so in die DB reinschreibt:
                  for ($i=0;$i<sizeof($select);++$i) {
                  $sql_insert=" INSERT INTO Branche (
                  unternehmensgroesse,
                  branche_der_gesuchten_taetigkeit,
                  )
                  VALUES
                  ('$unternehmensgroesse',
                  '$select[$i]',
                  )";}
                  Allerdings schreibt es bei mir jetzt immer nur den letzten Wert den ich im Multiplen Optionsfeld ausgewählt habe rein!Was mache ich hier jetzt falsch?Weißt du jetzt was ich gemeint habe?
                  M.f.G. Tragon

                  Kommentar


                  • #10
                    So wie Du es gecodet hast, müßte je Optionsfeld ein Record in die DB geschrieben werden.

                    Du schreibst Die Datenbank Variable ist Tinytext! ich denke Du meist damit branche_der_gesuchten_taetigkeit. Wenn das so ist, würde ich das wir folgt berwerkstelligen:
                    PHP-Code:
                    for ($i=0;$i<sizeof($select);++$i) {
                       
                    $optionensammler .= $select[$i] . " ";
                    }

                    // Im Feld $optionensammler steht jetzt beispielsweise
                    //   "eins drei " oder
                    //   "drei " oder
                    //   "eins zwei vier " usf.

                    $sql_insert="INSERT INTO Branche (unternehmensgroesse, branche_der_gesuchten_taetigkeit) 
                                    VALUES ('
                    $unternehmensgroesse', '$optionensammler')"

                    Kommentar


                    • #11
                      Jo genau so, vielen vielen Dank jetzt funktioniert dies sowie es soll!Echt ein sehr gutes Board mit um einiges besseren Mods!!!!!
                      M.f.G. Tragon

                      Kommentar


                      • #12
                        Diese Erkenntnis erst mit Post 66 ? *fg*

                        Kommentar


                        • #13
                          Lieber spät als nie!
                          M.f.G. Tragon

                          Kommentar

                          Lädt...
                          X