Mailinglisten-Archive |
> ich steh wohl grad ein wenig auf dem Schlauch und fand noch keine > Frage zu dem Thema, seit ich auf der Liste bin. Also Folgendes: Kein Wunder, ist ja auch nicht die PHP-Liste. ;-) Eigentlich somit hier vollkommen OT, aber vielleicht dennoch hilfreich. Mehr zur PHP-Liste im PHP-Center, URL siehe unten. > | Bereich | set('1','2','3','4') | YES | | NULL | | [...] > | <select name="Bereich" size=10 multiple> > | <option value="1">Geschäfts-/Unternehmensleitung > | <option value="2">Einkauf/Beschaffung > | <option value="3">Fertigung/Produktion > | <option value="4">Vertrieb/Marketing > | </select> [...] > | mysql_connect("HOST",USER); > | mysql_select_db("DB"); > | $replace_query = "REPLACE INTO table (Adressnummer,Bereich) VALUES ('$ID', '$Bereich')"; > | mysql_query($replace_query); [...] > Er übergibt jeweils nur den Wert des zuletzt in der Liste gewählen > OPTION-Punktes und nicht die gesamte List. Wenn also beispielsweise > value="1" UND value="3" vom HTML-Form übergeben werden, dann schreibt > PHP nur "3" in das Feld "Bereich", was ich für ziemlich unschön halte. Nun, es ist eher das uebliche Verhalten und eigentlich auch kaum verwunderlich, da $Bereich eine normale Variable ist, insofern wird deren Wert durch den "letzten" uebergebenen Wert des HTML-Formulars definiert. Daher schreibe man <select name="Bereich[]" size="10" multiple> Damit wird die Variable $Bereich von PHP als Array interpretiert, so dass nach Absenden des Formulars alle selecteten Werte darin zu finden sind. Z.B. nach Anwaehlen von "Einkauf/Beschaffung" und "Vertrieb/Marketing" somit die Werte 2 und 4, d.h. das Array sieht wie folgt aus: $Bereich[0] == 2 $Bereich[1] == 4 Daraus folgt, dass Du die Werte nicht unmittelbar in die Datenbank schreiben kannst, sondern zunaechst ein wenig nachbehandeln musst, um das richtige REPLACE-Statement zu erzeugen. Also Schleife ueber das Array, je nach vorhandenen Werten einen geeigneten String fuer REPLACE generieren. for ($i = 0; $i < count($Bereich) ; $i++) { $set_string .= "'" . $Bereich[$i] . "',"; // Werte: 'Zahl', } $set_string = substr($set_string, 0, -1); // letztes Komma weg Dann kann $set_string in Deiner $replace_query angegeben werden. Diese Loesung ist zwar moeglich, aber irgendwie doch unschoen. Fuer derartige Zwecke benutze ich daher eine Klasse namens bitpfriemler, siehe http://kuerbis.org/bitpfriemler/ Beste Gruesse, Ralf -- / ralf_(at)_kuerbis.org -> http://www.kuerbis.org / PHP-Center - alles rund um PHP -> http://www.php-center.de --- *** Abmelden von dieser Mailingliste funktioniert per E-Mail *** an mysql-de-request_(at)_lists.4t2.com mit Betreff/Subject: unsubscribe
php::bar PHP Wiki - Listenarchive