Quantcast
Channel: Tópicos
Viewing all articles
Browse latest Browse all 14700

Select multi a partir de $_POST

$
0
0
Mais uma questão engraçada...

Tenho um form com um select multi onde os visitantes escolhem as suas marcas preferidas:
Código (HTML):
<form name="Dados" method="post" action="pagseguinte.php">
        <p>Diz-me as tuas marcas preferidas:</p>
        <select name="Marcas[]" multiple="multiple">
                <option value="Volvo">Volvo</option>
                <option value="Saab">Saab</option>
                <option value="Opel">Opel</option>
                <option value="Audi">Audi</option>
                <option value="Fiat">Fiat</option>
                <option value="Renault">Renault</option>
        </select>
        <input type="submit" value="Escolher">
</form>

Desta forma, passarei para pagseguinte.php o array Marcas[] com todas as selecções feitas...
O problema surge se eu quiser também aí seleccionar as marcas escolhidas no form anterior...
Cheguei a este código:

Código (PHP):
<?php $strpesquisa = ((isset($_POST['Marcas'])) ? explode(',', §_POST['Marcas']) : '_'); ?>
<p>Eis as marcas que declaraste serem as tuas preferidas:</p>
<select name="Marcas[]" multiple="multiple">
        <option value="Volvo"<?php if(strpos($strpesquisa, 'Volvo') !== false)) echo ' selected="selected"'; ?>>Volvo</option>
        <option value="Saab"<?php if(strpos($strpesquisa, 'Saab') !== false)) echo ' selected="selected"'; ?>>Saab</option>
        <option value="Opel"<?php if(strpos($strpesquisa, 'Opel') !== false)) echo ' selected="selected"'; ?>>Opel</option>
        <option value="Audi"<?php if(strpos($strpesquisa, 'Audi') !== false)) echo ' selected="selected"'; ?>>Audi</option>
        <option value="Fiat"<?php if(strpos($strpesquisa, 'Fiat') !== false)) echo ' selected="selected"'; ?>>Fiat</option>
        <option value="Renault"<?php if(strpos($strpesquisa, 'Renault') !== false)) echo ' selected="selected"'; ?>>Renault</option>
</select>

Isto parece resultar se existirem poucas opções no SELECT, mas vamos imaginar que existem 25 opções...

Existe alguma forma melhor de escrever isto?

Obrigado pelas colaborações que venham a surgir.

Viewing all articles
Browse latest Browse all 14700