Listenfed mit Mehrfachauswahl

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

  • Listenfed mit Mehrfachauswahl

    Hallo,
    Wie erhalte ich die Werte einer Mehrfachauswahl in einem Listenfeld in einem Formular.
    Ich bekam nur immer den letzten Wert, will aber alle ausgewählten Werte.

    Ich habe es auch mit einem Array probiert, geht auch nicht.

    $Wert[] = $_POST['Wert'];
    Gruß, Hoffi
    Gruß Hoffi aus Radeberg

  • #2
    Schau doch mal was dir folgendes zeigt:

    PHP-Code:
    echo "<pre>";
    print_r($_POST);
    echo 
    "</pre>"

    Kommentar


    • #3
      echo "<pre>";
      print_r($_POST['Wert']);
      echo "</pre>";
      Es wird auch hier nur der letzte Wert angezeigt.
      Ich habe Eintrag 1,2,3 ausgwählt, eine 3 wird angezeigt.
      Danach habe ich 3,5,6 ausgewählt, wieder nur die 6 angezeigt.

      Es muss doch aber gehen, sonst wäre doch eine Mehrfachauswahl sinnlos.
      Gruß Hoffi aus Radeberg

      Kommentar


      • #4
        Zeig mal bitte dein HTML-Code

        mfg

        Kommentar


        • #5
          Hier der Formularteil:
          <select name="Gremium" size="10" multiple>
          <option value="1">Ortschaftsrat</option>
          <option value="2">Gemeinde o. Stadtrat</option>
          <option value="3">B&uuml;rgermeister</option>
          <option value="4">Kreistag</option>
          <option value="5">Kreisrat</option>
          <option value="6">Landtag</option>
          <option value="7">Bundestag</option>
          <option value="8">Europa-Parlament</option>
          <option value="9">Volksbefragung/Volksentscheid</option>
          </select>
          und die Auswertung:
          $id = $_POST['id'];
          $Gremium = $_POST['Gremium'];

          /* Diese Abschnitt funktionierte nicht !
          for($i = 1; $n < 10; $i++) {
          echo "<b>Zähler = </b>".$i."<br>"; //Zum Test
          if(!empty($Gremium.$i)) {
          $Gremium = $Gremium.",".($Gremium.$i = trim($_POST['Gremium$i']));
          echo "<b>Gremium = </b>".$Gremium."<br>"; //Zum Test
          }
          */
          //--
          echo "<pre>";
          print_r($_POST['Gremium']);
          echo "</pre>";
          //--
          Entscheidend ist aber die Tatsache, dass bei Mehrfachauswahl (multiple) nur ein Wert bei "$_POST" ankommt.
          Gruß Hoffi aus Radeberg

          Kommentar


          • #6
            Dacht ich es mir doch

            Einmal bitte lesen:

            http://tut.php-quake.net/formulare.html#u10

            mfg

            Kommentar


            • #7
              Du musst den Namen von select-Element array-fähig deklarieren:

              <select name="Gremium[color=red][][/color]" multiple>

              Dann kannst du folgendes probieren:

              PHP-Code:
              if (is_array($_POST['Gremium']))
                 foreach(
              $_POST['Gremium'] as $sel)
                    echo 
              'selected: '.$sel.'<br />';
              else
                 echo 
              'kein array'
              print_r($_POST['Gremium'] bringt - wie immer - die Erleuchtung.

              Kommentar


              • #8
                Aha, dort ist der Knackpunkt.
                Werde es ändern.
                Danke für den Tipp.
                Gruß Hoffi aus Radeberg

                Kommentar


                • #9
                  Nun taucht in dem Zusammenhang ein neues Problem auf:
                  Der ermittelte Wert wird nicht in die Datenbank übernommen.
                  Trage ich den Wert in der DatenbankTabelle in die vorgesehene Zelle ein, wird er bei Aufruf kurz angezeigt, dann gelöscht.
                  (Vor dem Einsatz dieser Array-Sache hat alles funktioniert.)
                  ????
                  Hier der Code:

                  if (is_array($_POST['Gremium'])) {
                  foreach($_POST['Gremium'] as $sel)
                  if(empty($GremiumWert)) $GremiumWert = $sel;
                  else $GremiumWert = $GremiumWert.",".$sel;
                  echo 'selected: '.$sel.'<br />';
                  echo 'Anzeige: '.$GremiumWert.'<br />';
                  } else {
                  $GremiumWert = 'Keine Auswahl!'; echo 'kein array'; } print_r($_POST['Gremium']);
                  Der Code für ein Update sieht so aus:
                  $query = "UPDATE test_daten SET BeginDatumTag = '$BeginDatumTag', BeginDatumMonat = '$BeginDatumMonat', BeginDatumJahr = '$BeginDatumJahr', WahlDatumTag = '$WahlDatumTag', WahlDatumMonat = '$WahlDatumMonat', WahlDatumJahr = '$WahlDatumJahr', WahlArt = '$WahlArt', GremiumWert = '$GremiumWert' WHERE id = $id";
                  INSERT u.a. noch nicht gesetzt, muss erstmal so fnktionieren.
                  Die Echo-Anzeigen zeigen alles richtig an, das MySQL-Feld ist "VARCHAR" und richtig dimensioniert.
                  Normalerweise müsste nun der Wert "$GremiumWert" in die Datenbank eingetragen werden.

                  Großes ?





                  Zuletzt geändert von kjhofmann; 23.06.2008, 11:53.
                  Gruß Hoffi aus Radeberg

                  Kommentar


                  • #10
                    Wofür gibts eigentlich die PHP-Tags?

                    Der Code für ein Update sieht so aus:
                    Und wie sieht die vollständig geparste und ausgegebene Query aus? (Regeln)

                    Normalerweise müsste nun der Wert "$GremiumWert" in die Datenbank eingetragen werden.
                    Wenn es dir nur um den wert geht, warum sprichst du insgesamt so viele Spalten an?
                    Zuletzt geändert von TobiaZ; 23.06.2008, 11:56.

                    Kommentar


                    • #11
                      Warum eigentlich eine Mehrfachauswahl, wenn du dann doch nur den letzten Wert aus $_POST['Gremium'] in $GremiumWert übernimmst? Genau das passiert nämlich in deiner foreach Schleife.

                      Wie passt die Mehrfachauswahl eigentlich zu deinem DB-Schema? Du hast eine $id in der Hand und mehrere Werte in $_POST['Gremium']. Wenn $id dein Primary Key ist, wird am Ende immer nur der letzte Wert aus $_POST['Gremium'] in der DB stehen, auch wenn du das mit der Schleife geregelt bekommst.
                      Sieht so aus als bräuchtest du eine weitere Tabelle. Ich habe den Thread allerdings nicht ganz gelesen ...
                      Zuletzt geändert von onemorenerd; 23.06.2008, 12:14.

                      Kommentar


                      • #12
                        Also mal langsam:
                        Im $GremiumWert steht nicht der letzte Wert, sondern alle ausgewählten Werte. Echo-Ausgabe zeigt es.
                        Und wie sieht die vollständig geparste und ausgegebene Query aus? (Regeln)
                        Damit weiß ich nichts an zu fangen. Bisher hat der UPDATE so funktioniert. Wo finde ich die erwähnte Regel (in Deutsch, mein Englisch ist leider rudimentär)
                        Wie passt die Mehrfachauswahl eigentlich zu deinem DB-Schema? Du hast eine $id in der Hand und mehrere Werte in $_POST['Gremium']. Wenn $id dein Primary Key ist, wird am Ende immer nur der letzte Wert aus $_POST['Gremium'] in der DB stehen, auch wenn du das mit der Schleife geregelt bekommst.
                        Ich habe die Werte der Schleife in den Wert $GremiumWert jemeils mit Komma getrennt ermittelt, so dass ich dann nur einen Wert für die Datenbanktabelle habe.
                        Dort, wo die Werte dann in einer (oder mehrere) Webseiten ausgewertet werden, werden diese Daten wieder in ein Array aufgelöst und kommen zur Anzeige.
                        Sieht so aus als bräuchtest du eine weitere Tabelle. Ich habe den Thread allerdings nicht ganz gelesen ...
                        Kann man denn innerhalb eines Formular Werte auf zwei Tabellen speichern? Habe ich noch nicht gemacht. Wei geht das?

                        Der Hintergrund der Aktion:
                        Ich habe den Auftrag, für einen SPD-Verein die Webseiten neu zu gestalten.
                        Für Wahlen wird nun das Datum des beginnenden Wahlkampfes, das Wahldatum, die zu wählenden Gremien und noch die Wahlart (Landesweit, Einzelwahl etc.) in eine Datenbank gegeben und auf den einzelnen Webseiten mit den zu wählenden Personen verknüpft.
                        Da aber bekannterweise sehr unterschiedlich die Gremien gewählt werden, z.B. Stadt- & Gemeinderat, Kreistag, Bürgermeister usw. muss immer unterschiedlich ausgewählt werden. Das wollte ich mit einer Mehrfachauswahl lösen.
                        Die gesamte Tabelle funktioniert einwandfrei, nur wenn ich den ermittelten Wert der Mehrfachauswahl hinzu füge, geht es nicht mehr.

                        Um mich der Sache zu nähern, habe ich eine Testseite angelegt, in der ich nur die nötigsten Werte verwende. Einen Wert1, die Mehrfachauswahl und einen Wert2, ein Textfeld.
                        Ich hoffe hier der Sache auf den Grund zu kommen.
                        Gruß Hoffi aus Radeberg

                        Kommentar


                        • #13
                          Im $GremiumWert steht nicht der letzte Wert, sondern alle ausgewählten Werte. Echo-Ausgabe zeigt es.
                          Poste die Ausgabe hier!

                          Wo finde ich die erwähnte Regel (in Deutsch, mein Englisch ist leider rudimentär)
                          http://php-resource.de/forum/showthr...threadid=50454

                          Kann man denn innerhalb eines Formular Werte auf zwei Tabellen speichern? Habe ich noch nicht gemacht. Wei geht das?
                          Das Formular hat nichts mit der Tabelle zu tun. Die Frage ergibt so keinen Sinn.

                          Kommentar


                          • #14
                            Ich glaube, jetzt habe ich es.
                            Ich darf nicht den Sammelwert $GremiumWert in die Datenbank eintragen wollen, sondern eine neue Variable nehmen, z.B. $GremiumEintr und diese übergebe ich den Sammelwert.
                            $GremiumEintr = $GremiumWert;
                            So hat es funktioniert.

                            Danke für die Mithilfe.
                            Gruß Hoffi aus Radeberg

                            Kommentar


                            • #15
                              ganz sicher...

                              Kommentar

                              Lädt...
                              X