Ich hab jetzt grad mal was rumgetestet.
Dazu hab ich ein Select-Feld mit Mehrfachauswahl genommen.
Also das hier:
Es scheint als wuerde dabei nur ein Wert uebergeben werden, was ich erstmal nicht so prickelnd finde und das irgendwie auch den Sinn der Mehrfachauswahl vollkommen wegfallen laesst.
Hier der Code:
selecttest.php
HTML:
<?php
echo nl2br(print_r($_POST,true));
?>
<form method="post" action="selecttest.php">
<select name="multi" multiple>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="d">d</option>
<option value="e">e</option>
</select>
<input type="submit">
</form>
Dieses "Multi-Select" zu nutzen waere ja erstmal naheliegender als eine Textarea, wie Du es gemacht hast. Allein weil man einzelne Elemente leichter auswaehlen kann.
Nur ist es jetzt natuerlich irgendwo traurig zu sehen, dass offensichtlich nur einer der ausgewaehlten Werte uebergeben wird.
Nachtrag:
Ich hab das ganze jetzt mal von POST nach GET umgestellt und sehe in meiner Adressleiste folgendes:
Code:
http://localhost:8080/selecttest.php?multi=b&multi=c&multi=d
Es werden also wohl doch alle ausgewaehlten Elemente uebergeben, jedoch scheint PHP damit nicht so ganz klarzukommen, da ja sozusagen 3 Variablen mit dem gleichen Namen uebergeben werden.
Man koennte sich vorstellen, dass PHP dies so verarbeitet:
PHP:
$_GET['multi']="b";
$_GET['multi']="c";
$_GET['multi']="d";
Was natuerlich erklaert warum bei der Ausgabe von $_GET, oder im Beispiel weiter oben $_POST, nur d rauskommt, obwohl b,c und d ausgewaehlt sind.
Der einzige Weg den ich nun sehe dies richtig auszuwerten waere den Querystring von Hand zu zerlegen und alles was multi heisst in ein Array zu packen.
Das "Problem" dabei ist nur, dass das alles dann ueber GET laufen muss. Ob sich da was mit POST machen laesst kann ich jetzt noch nicht sagen. Jedoch wuerde der Weg auf jeden Fall anders aussehen da dort nicht mit dem Querystring gearbeitet werden kann.
Nachtrag 2:
Ich hab jetzt den Code soweit angepasst, dass ich ein Array bekomme welches die ausgewaehlten Werte bekommt. Wie gesagt, das funktioniert nur mit GET.
PHP:
<?php
$multi=array();
$parts=explode("&",$_SERVER['QUERY_STRING']);
for ($x=0;$x<count($parts);$x++)
{
$parts[$x]=explode("=",$parts[$x]);
if ($parts[$x][0]=="multi")
{
$multi[]=$parts[$x][1];
}
}
echo nl2br(print_r($multi,true));
?>
<form method="get" action="selecttest.php">
<select name="multi" multiple>
<option value="a">a</option>
<option value="b">b</option>
<option value="c">c</option>
<option value="d">d</option>
<option value="e">e</option>
</select>
<input type="submit">
</form>