Por Pedro Peixoto para o PPLWARE
Esta semana vamos regredir um pouco o nível de dificuldade do artigo, e para os programadores mais iniciados vamos explicar como popular dinamicamente elementos “select” através de uma tabela da base de dados (MySQL).
Antes demais para programarem em PHP necessitam de um servidor, do PHP e de uma Base de dados (caso seja necessária). Felizmente existem “pacotes” que já trazem tudo o que é necessário (Apache, MySQL, PHP), deixo aqui alguns que já usei e que recomento: easyPHP, WAMP, MAMP,XAMPP. Depois de terem o software instalado vamos iniciar:
Em primeiro lugar vamos observar a estrutura de um “select”:
<select>
<option value=”1”>On</option>
<option value=”0”>Off</option>
</select>
No primeiro exercício vamos popular um elemento select usando um array PHP sendo que o value e o texto são iguais:
<?php $opções=array(‘PPLWARE Blog’,’PPLWARE Forum’,’PPLWARE Videos’); echo ‘<select>’; foreach($opções as $opcao) echo ‘<option value=”‘ . $opcao . ‘”>’ . $opcao . ‘</option>’; echo ‘</select>’; ?>
Se fosse necessário que o texto e o value fossem diferentes o script seria:
<?php $opções=array(1=>’PPLWARE Blog’,2=>’PPLWARE Forum’,3=>’PPLWARE Videos’); echo ‘<select>’; foreach($opções as $valor=>$texto) echo ‘<option value=”‘ . $valor . ‘”>’ . $texto . ‘</option>’; echo ‘</select>’; ?>
Mas aquilo que é mais frequentemente necessário é popular um “select” usando dados da base de dados.
Partindo da seguinte base de dados:
O código seria o seguinte:
<?php //ligar ao servidor de BD mysql_connect(‘localhost’,’root’,’root’);
//escolher a base de dados mysql_select_db(‘pplware’);
//query a executar…a tabela chama-se seccoes $query=’Select * from secções’;
//execução da query $resultado=mysql_query($query); echo ‘<select name=”secção”>’;
//para todas as linhas da tabela while($linha=mysql_fetch_array($resultado)) { //escreve o ‘id’ no value e o ‘nome’ no texto. echo ‘<option value=”‘ . $linha[‘id’] . ‘”>’ . $linha[‘nome’] . ‘</option>’; } echo ‘</select>’; ?>
De notar que atribuí um “name” ao select, isto possibilita que após a submissão de um form se possa ir buscar o seu valor.
Ainda no capítulo do select, podíamos ir um pouco mais longe e construir selects que se preenchem à medida que outros são selecionados (por exemplo quando escolhemos os países e de seguida aparecem no select seguinte as cidades desse país ou para o exemplo dos distritos, concelhos), mas para isso teríamos de recorrer ao javascript e isso já fica um pouco fora no âmbito desta rubrica.
Já agora, quem prender as bases de dados dos distritos e concelhos pode fazer download do site dos CTT (ver aqui).
De qualquer forma agradeço opiniões e sugestões? Existem pessoas com interesse em artigos mais fáceis? Gostariam que esta rubrica se alarga