Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Pulldown-Einträge in ein DB-Feld

Einklappen

Neue Werbung 2019

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

  • Mehrere Pulldown-Einträge in ein DB-Feld

    Liebe php.de-Forum-Gemeinde

    Ich habe folgendes Problem. Bei einem Formular wird ein Pulldown-Menü Daten aus einer SQL-DB gefüllt. Dies klappt natürlich einwandfrei. Da im Pulldown auch mehrere Einträge ausgewählt werden dürfen, habe ich dieses auf "multiple" gesetzt.

    Soweit so gut. Leider speichert mein Skript jedoch nur den letzten im Pulldown ausgewählten Datensatz. Alle anderen markierten gehen verloren.

    Formular:
    Code:
    $verbindung = mysql_connect ($dbhost, $dbuser, $dbpass);
    mysql_select_db ($dbname, $verbindung);
    $sql = "SELECT * FROM tabelle ORDER BY name ASC";
     
    $ergebnis = mysql_query($sql, $verbindung);
    $anzahl = mysql_num_rows($ergebnis);
     
    echo "<select name=\"t_feld3\" size=\"5\" multiple> 
                <option value=\"leer\">Auswahl ($anzahl)</option>";
     
    while($row = mysql_fetch_object($ergebnis))
     { 
         echo "<option value=\"$row->user\">$row->name</option>";
     }
    echo "</select>";

    Daten speichern:
    Code:
    $sql_eintrag = "INSERT INTO tabelle (feld1, feld2, feld3) VALUES ('$t_feld1', '$t_feld2', '$t_feld3')";
    Vielen Dank und einen tollen Wochenstart.
    Viele Grüße

  • #2
    Ein Multiple-Select brauch in seinem namen ein [] also name=\"t_feld3[]\" dann bekommst du ein Array mit den ausgewählten Werten geliefert

    Kommentar


    • #3
      Hallo cycap,

      Danke erst einmal. Logisch, man benötigt Arrays.

      Habe nun die eckigen Klammern [] eingesetzt und erzeuge damit Arrays.
      Die nächste Herausforderung ist jedoch, dass ich immer nur als Antwort "Array" erhalte.

      Code:
      <select name=\"t_feld3[]\" size=\"5\" multiple>
      ergibt bei der Folgeseite mit
      $_POST[t_feld3] 
      nur die Ausgabe "Array"
      Ebenso mit $_REQUEST erscheint schlicht nur "Array".
      Habe da irgendwo einen Denkfehler.

      Kommentar


      • #4
        Dein Denkfehler liegt darin das man in ein DB-Feld auch nur einen Wert schreiben sollte. Und Arrays sind nicht zu behandeln wie Strings, sonst kommt eben nur der String "Array()" dabei raus.

        Ausgeben kannst du ein Array mit print_r() und zum speichern solltest du dir eine intelligente Datenbankstruktur überlegen.

        Kommentar


        • #5
          Dein DB-Design scheint etwas verkorkst zu sein. Eigentlich sollte ja für jede gewählte Option ein eigener Eintrag in die entsprechende Tabelle erfolgen, z.B. so:
          PHP-Code:
          $sql "
              INSERT INTO tabelle (
                  feld1
              ) 
              VALUES ('" 
          .
              
          implode("'), ('"$_POST['t_feld3']);
              . 
          "')";
          echo 
          $sql;   // Kontrollausgabe 
          und nicht mehrere Einträge in einen Datensatz.
          Gruss
          L

          Kommentar

          Lädt...
          X