Mehrfachauswahl funktioniert nicht

Guten Morgen,
erst mal sorry, das ich erst jetzt wieder poste, aber ich hatte keine Zeit daran weiter zu arbeiten...
So, zum Thema:
Also hier ist nochmal der Auszug des Formulars (html), welches ich an die php übergebe:

HTML:
<p><select size="3" name="praedikate[]" multiple tabindex="31">
			<option selected>Saarländische Rallye Meisterschaft</option>
			<option>Rallye Pokal Südwest</option>
			<option>Saar-Pfalz Rallyemeisterschaft</option>
			</select></td>

und hier das Script, welches an die DB übergibt:

PHP:
$dbanfrage = "INSERT into $tabelle values ('', '" . $_POST["fname"]. "', '" . $_POST["fvorname"] . "','" . $_POST["fstrasse"] . "',
'" . $_POST["fplz"] . "','" . $_POST["fwohnort"] . "','" . $_POST["fland"] . "','" . $_POST["ftelefon"] . "',
'" . $_POST["fmail"] . "','" . $_POST["flizens"] . "','" . $_POST["bname"] . "','" . $_POST["bvorname"] . "',
'" . $_POST["bstrasse"] . "','" . $_POST["bplz"] . "','" . $_POST["bwohnort"] . "','" . $_POST["bland"] . "',
'" . $_POST["btelefon"] . "','" . $_POST["bmail"] . "','" . $_POST["blizens"] . "','" . $_POST["hersteller"] . "',
'" . $_POST["modell"] . "','" . $_POST["hubraum"] . "','" . $_POST["leistung"] . "','" . $_POST["baujahr"] . "',
'" . $_POST["turbo"] . "','" . $_POST["kennzeichen"] . "','" . $_POST["fahrgestellnummer"] . "',
'" . $_POST["fiahomnummer"] . "','" . $_POST["treibstoff"] . "','" . $_POST["gruppe"] . "','" . $_POST["klasse"] . "',
'" . $_POST["praedikate"] . "','" . $_POST["nenngeld"] . "')";

Ich hoffe Ihr seht den Fehler, den ich weis echt nimmer weiter. Es wird anstatt der mehrfach ausgewählten Zeilen nur der Wert "Array" in die DB geschrieben. :(
 
Ist doch ganz logisch. Du schreibst ja auch das übergebene Array in die DB. $_POST[praedikate] IST EIN ARRAY Vielleicht siehst du dir die vorherigen Posts noch einmal an. Da wurden zwei verschiedene Verarbeitungsmöglichkeiten vorgestellt. Wenn du, so wie du geschrieben hast, die Vereinigung der übergebenen Werte in eine Zeile vorziehst, dann solltest du das auch machen. Nur fehlt die entsprechende Zeile in deinem Script. Und selbst wenn die da ist, nützt es nichts wenn du die Originalen POST Daten reinschreibst.
 
Ersetz
$_POST["praedikate"]
durch
implode(',', $_POST['praedikate'])

Du musst dir das so vorstellen. Deine DB-Anfrage setzt du aus vielen Strings (deine Post-Variablen) zusammen. Aber $_POST["praedikate"] ist kein String, sondern ein Array, welches mehrere Strings enthält. Bei der Umwandlung von Array zu String macht PHP den String "Array" daraus. Du willst ja nicht das Array in die Datanbank schreiben, sondern den Inhalt. Dafür ist die Funktion implode() da. Sie macht aus deinem Array ein String, indem es alle Werte im Array miteinander verkettet. Zwischen die Werte wird zur besseren Lesbarkeit in dem Fall ein Komma gesetzt.

Du hast übrigens in deinem HTML Ausschnitt noch einen Fehler. Du musst das "p"-Element nach dem </select> auch wieder schließen.
 
Zuletzt bearbeitet:
:)
Ersetz
$_POST["praedikate"]
durch
implode(',', $_POST['praedikate'])

Das funktioniert :-) Aber ich hatte das schon mal so probiert, nachdem Felix mir den Hinweis gegeben hatte. Das hatte nicht funktioniert....ich muss also noch einen Fehler drin gehabt haben... VIELEN DANK nochmal an ALLE. Das WE kann kommen.....

Andreas
 
Zurück