Select dinâmico com PHP, Javascript e MySQL
Aprenda a fazer um select que, quando seu valor é alterado, é automaticamente realizado uma ação sem necessidade de usar um botão post.
Parte 3: Implementando com MySQL
No MySQL crie um banco de dados com o nome "brasil", por exemplo.
Crie a tabela estados (com os campos id->auto_increment e estado) e
outra chamada cidades (id e cidade). Na tabela cidades as cidades de
mesmo estado devem ter o mesmo id. O primeiro select ficaria assim:
<?php
$estado=$_GET['estado'];
$conexao=mysql_pconnect("localhost","usuário","senha");
mysql_select_db("brasil", $conexao);
$query = "select * from estados order by id";
$result = mysql_query($query) or die(mysql_error());
$query = stripslashes($query);
?>
<select name="sele" onChange="getStates(this);">
<option value="">selecione seu estado</option> <?php
while ($row = mysql_fetch_row($result)){
$est = $row[1];
$id = $row[0];
?>
<option value=<?echo $id;?> <? if ($estado==$id){ echo "SELECTED";} ?> > <? echo $est; ?> </option> <?
}
?>
</select>
$estado=$_GET['estado'];
$conexao=mysql_pconnect("localhost","usuário","senha");
mysql_select_db("brasil", $conexao);
$query = "select * from estados order by id";
$result = mysql_query($query) or die(mysql_error());
$query = stripslashes($query);
?>
<select name="sele" onChange="getStates(this);">
<option value="">selecione seu estado</option> <?php
while ($row = mysql_fetch_row($result)){
$est = $row[1];
$id = $row[0];
?>
<option value=<?echo $id;?> <? if ($estado==$id){ echo "SELECTED";} ?> > <? echo $est; ?> </option> <?
}
?>
</select>
Isso, a primeira vista, ficou mais complicado e maior do que o anterior. Mas imagine que você queira colocar todos os estados e não só 5 como feito no exemplo, ou que você quer tirar algum estado ou acrescentar, então basta fazer isso no MySQL, evitando alterar o script. Para o select das cidades:
<?php
$query = "select * from cidades where id='$estado'";
$result= mysql_query($query) or die(mysql_error());
$query = stripslashes($query);
if ($estado){ ?>
<select name="cidade">
<option value="">selecione sua cidade</option> <?php
while ($row = mysql_fetch_row($result)){
$city = $row[1];
$id2 = $row[0];
echo "<option value=$id2> $city </option>";
}
?>
</select>
<?php }
?>
$query = "select * from cidades where id='$estado'";
$result= mysql_query($query) or die(mysql_error());
$query = stripslashes($query);
if ($estado){ ?>
<select name="cidade">
<option value="">selecione sua cidade</option> <?php
while ($row = mysql_fetch_row($result)){
$city = $row[1];
$id2 = $row[0];
echo "<option value=$id2> $city </option>";
}
?>
</select>
<?php }
?>
Que ficou sem sombra de dúvidas muito mais elegante que o script sem o MySQL.
Finish... basta agora que você implemente o script para suas necessidades. Espero que o artigo seja tão gratificante para vocês o quanto foi para mim escrevê-lo em horário de serviço.
Gustavo de Oliveira Corrêa