Daten aus einer Mehrfach-Auswahlbox in die DB schreiben
Annabel
- php
Hi,
ich habe eine Frage zu Mehrfachauswahlboxen in HTML. Wenn ich die Daten einer einfachen Auswahlbox mit PHP in eine MYSQL-DB schreiben möchte, geht das ja über den definierten Namen der Auswahlbox. Wie aber komme ich an die Werte von einer Mehrfachauswahlbox ran?
Danke für Eure Hilfe!
Gruss Annabel
Hallo Annabel,
Wie aber komme ich an die Werte von einer Mehrfachauswahlbox ran?
schau dir mal http://dclp-faq.de/q/q-formular-select-multiple.html an, das sollte helfen.
Grüße aus Nürnberg
Tobias
Hallo Annabel,
ich habe eine Frage zu Mehrfachauswahlboxen in HTML. Wenn ich die Daten einer einfachen Auswahlbox mit PHP in eine MYSQL-DB schreiben möchte, geht das ja über den definierten Namen der Auswahlbox. Wie aber komme ich an die Werte von einer Mehrfachauswahlbox ran?
Über den Namen und ein Array dazu muüßte man aber wissen was Du wohin schreiben willst!
Die Daten in der Selectbox mußt Du ja irgendwie definieren.
Das sieht dann so aus:
<select name="var[]" multiple>
<option value="1">
<option value="2">
</select>
TomIRL
Hallo Annabel,
du stellst eine sehr interessante Frage. Ich glaube, was du willst. Du möchtest nämlich alle selektierten Werte einer Mehrfachauswahlbox übernehmen.
Wenn du das wirklich willst, geht das nur über JAVASCRIPT. Anbei habe ich ein Programm geschrieben, was dir die Werte einer Mehrfachbox herausliest, wenn du mehrere Einträge auswählst.
function abschicken()
{
var laenge=document.forms[0].liste.length;
var ergebnis="";
var Objekt=document.forms[0].liste;
for(i=0; i < laenge; i++)
{
if(Objekt.options[i].selected)
{
ergebnis=ergebnis+" "+Objekt.options[i].value;
}
}
document.forms[0].ergebnis.value=ergebnis;
alert(ergebnis);
return true;
}
//-->
</script>
</head>
<body>
<?php
print_r ($_POST);
?>
<h1>Die Selectauswahl</h1>
<form method="post" onsubmit="return abschicken(); ">
<select name="liste" multiple="multiple">
<option value="12">Hallo</option>
<option value="13"> Test</option>
<option value="23">Neu</option>
<option value="15">Mist</option>
</select>
<input type="hidden" name="ergebnis" />
<input type="submit" value="Abschicken" >
</form>
</body>
</html>
Was macht dieses Programm? Es ist eine Box, die Mehrfacheinträge zulässt. Man kann somit mehrere Einträge auswählen.
Wichtig ist dabei die Funktion abschicken, die beim Senden der Daten ausgelöst wird. Diese Funktion geht die Liste durch und prüft, ob ein Eintrag ausgewählt worden ist. Ist dies der Fall, wird ein Ergebnisstring mit dem ausgewählten Wert und einem Leerzeichen konkateniert.
Dieser String wird dann in ein verstecktes Feld namens Ergebnis geschrieben, dessen Wert man dann nach dem Verschicken abrufen kann.
Willst du auf die Werte dieses Strings zugreifen, musst du den Wert $_POST["ergebnis"] nach den Leerzeilen splitten.
Ich denke, das war es, was du wolltest, oder?
Grüße,
Wolfram
Hallo Wolfram,
Wenn du das wirklich willst, geht das nur über JAVASCRIPT.
nein. Ein Satz eckige Klammern hinter dem namen des select-Feldes reicht bei php völlig aus (siehe Toms und mein Posting). Außerdem schließt du damit Nutzer, die - aus welchem Grund auch immer - kein js haben, aus.
Anbei habe ich ein Programm geschrieben,
du weißt schon, wie das so ist mit self und so...?
Willst du auf die Werte dieses Strings zugreifen, musst du den Wert $_POST["ergebnis"] nach den Leerzeilen splitten.
und was ist, wenn der Wert eines Eintrages ein Leerzeichen enthält?
Grüße aus Nürnberg
Tobias
Hallo Wolfram,
Nette Idee, aber das wäre wie mit Kanonen auf Spatzen zu schiessen!
Also ne Verschwendung.
Wenn Du ein Array wie auch immer übergibst kannst Du es mit foreach () relativ einfach auswerten.
Also wozu dann JS ?
Zu den Problemen Deines Skriptes hatt Dir Tobias ja schon genug geschrieben.
Viele Grüße aus Berlin
TomIRL
Hallo Wolfram,
Nette Idee, aber das wäre wie mit Kanonen auf Spatzen zu schiessen!
Also ne Verschwendung.
Wenn Du ein Array wie auch immer übergibst kannst Du es mit foreach () relativ einfach auswerten.
Also wozu dann JS ?
Zu den Problemen Deines Skriptes hatt Dir Tobias ja schon genug geschrieben.Viele Grüße aus Berlin
Danke für den Hinweis. Man lernt jedenfalls nie aus.
Grüße,
Wolfram