View Full Version : DropDown box com multipla escolha e tratamento do $_POST


eXcept
19-04-2006, 18:48
Viva

Tenho uma dropdown box criada, com multipla escolha, assim:

<form method="POST" action="teste.php">
<p><select size="8" name="D1" multiple>
<option>a</option>
<option>d</option>
<option>e</option>
<option>f</option>
<option>g</option>
<option>h</option>
<option>i</option>
<option>j</option>
<option>k</option>
<option>m</option>
<option>n</option>
<option>b</option>
<option>c</option>
</select></p>
<p><input type="submit" value="Submit" name="B1"></p>
</form>


no teste.php tenho


<?
print_r($_POST['D1']);
?>


no entanto, o $_POST['D1'] só tem o último valor seleccionado da dropdown box.

Como é que posso "apanhar" todas as variáveis seleccionadas?

TIA

eXcept
19-04-2006, 18:58
Um outro teste

<?
$valor = $_POST['D1'];
foreach ($valor as $a) {
echo $a;
}
?>

Warning: Invalid argument supplied for foreach() in C:\Program Files\xampp\htdocs\tes2\teste.php on line 3

:-(

mcog_blaster
20-04-2006, 00:34
tavas quase lá...

<form method="POST" action="teste.php">
<p><select size="8" name="D1[]" multiple>
<option>a</option>
<option>d</option>
<option>e</option>
<option>f</option>
<option>g</option>
<option>h</option>
<option>i</option>
<option>j</option>
<option>k</option>
<option>m</option>
<option>n</option>
<option>b</option>
<option>c</option>
</select></p>
<p><input type="submit" value="Submit" name="B1"></p>
</form>



<?
print_r($_POST['D1']);


foreach($_POST['D1'] as $key => $value)
{
echo $value.'<br />';
}

?>

eXcept
20-04-2006, 00:37
Vou experimentar amanha.

cumpz

eXcept
20-04-2006, 10:52
j
Warning: Invalid argument supplied for foreach() in C:\Program Files\xampp\htdocs\tes2\teste.php on line 5


:-(

mcog_blaster
20-04-2006, 13:40
hummm...?
so te da esse erro quando nao escolhes nenhum valor, correcto?
È que aki ta a funcionar direito, só da esse erro caso nao se escolha nehum valor



if($_POST['D1'])
{
//foreach loop
}
else
{
//mensagem de erro
}

eXcept
20-04-2006, 13:51
esse erro dá-me qualquer que seja o valor introduzido. uma selecção ou várias

o print_r() dá-me sempre a ultima variavel seleccionada

com esse código dá-me na mesma o erro.

Estão-me a dizer que tenho de declarar a D1 como um array, mas não percebo nem como nem porquê...

eXcept
20-04-2006, 14:18
ele só me mostra *sempre* o ultimo valor seleccionado, quer por echo da variavel, quer pelo print_r() do post!

mcog_blaster
20-04-2006, 14:19
axo que ja sei qual é o problema...lol.
Olha bem pra o codigo do form que te enviei, vais ver que a variavél está definida como um array.

<p><select size="8" name="D1[]" multiple>

esta definida como uma array para que possa realmente guardar varios valores, caso contrario D1 apenas te mostra a ultima selecçao.

eXcept
20-04-2006, 14:22
damn, pormenor de caca mas mt importante!

tks, ja bomba ;)

CrazyBomber
20-04-2006, 15:14
já agora só acrescentava algo ao código de verificação de selecção:


if( isset( $_POST['D1']) )
{
//foreach loop
}
else
{
//mensagem de erro
}


o isset() vai ver se o dito campo está lá ou não. Assim não dá erro nenhum :)