Wie bekomme ich eine Mehrfachauswahl mittels PHP
<select name=mehrfachauswahl[] size=3 multiple>
<option>a</option>
<option>b</option>
<option>c</option>
</select>
in ein SET-Feld in eine MySQL-Datenbank ?
INSERT INTO test ( name, mail, mehrfachauswahl ) values( '$name', '$mail', '$mehrfachauswahl' ) funktioniert nicht.
Auch
INSERT INTO test ( name, mail, mehrfachauswahl ) values( '$name', '$mail', '$mehrfachauswahl[]' ) nicht.
Dir ist bekannt, daß dein Formular in der Auswerteseite ein Array namens "$mehrfachauswahl" erzeugt?
Wenn nein, dann ist das der Ansatz zur Lösung deines Brettes vom Kopf.
Die erste Variante geht logischerweise nicht, da wird wohl nur "Array" in die DB geschrieben.
Und die zweite Variante geht nicht, weil kein Index angegeben wird. Die Schreibweise ohne Index ist nur dann sinnvoll, wenn du hinten ans Array noch einen Wert anhängen willst.
Du mußt deine Daten vor dem Eintragen in die DB etwas aufbereiten. Abhängig davon, wie du später wieder ran willst, könntest du die Einträge durch Komma trennen.
$eintrag=$mfa[0].",".$mfa[1].",".$mfa[2];
wäre eine simple (und schlechte) Möglichkeit, aber sie zeigt das Prinzip: Alle Array-Elemente mit einem Trennzeichen hintereinander in einen String zu übertragen und den dann in die Datenbank schreiben.
Zum Glück gibts dafür eine Funktion:
implode(string glue, array pieces);
http://www.selfphp4.de/funktionsreferenz/string_funktionen/implode.php
Damit gehts einfach:
$eintrag=implode(",",$mfa);
PS: $mfa habe ich mal abgekürzt, gemeint ist $mehrfachauswahl.
- Sven Rautenberg