Multiple Select Feld im Formular in Datenbank schreiben

hoefti

Grünschnabel
Hallo zusammen

Code:
<select name="werte[]" multiple>
  <option value="2">2</option>
  <option value="1">1</option>
  ...
</select>

Ein solches Feld möchte ich nach dem Absenden des Formulars in die Datenbank eintragen. Allerdings handelt es sich hierbei um einen Datensatz, der in der Spalte "werte" mehrere Variablen bekommt, die in der Datenbank untereinander stehen müssen.
Das Feld in der Datenbank ist ein Textfeld.

Code:
   foreach ($_REQUEST['werte'] as $werte_element) { 
echo $werte_element."-"; 
 }

kann ich sie mir anzeigen lassen. Wie aber kann ich sie nun in die Datenbank mittels
Code:
 $query = "update Tabelle set .....

eintragen.

Danke im voraus
hoefti
 
PHP:
$Query = "update `tabelle` set ";
$i = 0;
while (list ($key, $val) = each ($_POST['werte']) {
  $Query .= $key." = '".$val."'";
  if ($i < count ($_POST['werte'])-1) $Query .= ", ";
  $i++;
}
$Query .= " where `id` = '".$_POST['id']."'";
 
Hi hoefti

Schreib mal wie die Tabelle aussieht, ob die Werte als String umgewandelt werden sollen oder pro eintrag eine Spalte vorliegt

Edit:
Aber das, was _voodoo geschrieben hat sollte eigentlich passen :-)
 
Zuletzt bearbeitet:
Hallo ihr beiden

Vielen Dank für eure Hilfe. Funktion ist nun gegeben.
Allerdings habe ich dies nun versucht für eine Checkbox umzuschreiben, was leider nicht funktioniert.

Code:
 <input name="Laender[]" type="checkbox" value="Alle weiteren Länder" <?php if (preg_match("/Alle weiteren Länder/", "$Laender")) 
{ echo "checked";} ?> >Alle weiteren Länder 
<input name="Laender[]" type="checkbox" value="Deutschland" <?php if (preg_match("/Deutschland/", "$Laender")) { echo 
"checked";} ?> >Deutschland 
<input name="Laender[]" type="checkbox" value="Schweiz" <?php if (preg_match("/Schweiz/", "$Laender")) { echo "checked";} ?> 
>Schweiz 
<input name="Laender[]" type="checkbox" value="Österreich" <?php if (preg_match("/Österreich/", "$Laender")) { echo "checked";} 
?> >Österreich

Die Variable wird ebenfalls in einem Feld ohne Leerzeichen gespeichert.
Nicht so pralle, kann ich aber nicht ändern, da die Struktur der Datenbank nicht umgestellt werden darf.

Versucht habe ich es mal mit

Code:
  if (isset($_POST["Laender"]))
 { 
 $string_laender .= "".$_POST['Laender'][$i]; 
		for ($i=0; $i<sizeof($_POST['Laender']); $i++) { 
 $string_laender .= "".$_POST['Laender'][$i]; 
		} 
	 }

was im ersten Moment auch zu klappen schien, allerdings schreibt er mir beim Ändern manchmal einen doppelten Wert ins Feld
"DeutschlandAlle weiteren LänderDeutschlandSchweiz"

Dies passiert wenn schon Werte eingetragen waren.

Habt ihr auch hier eine Idee?

Gruß hoefti
 
Zurück