Selects dependentes com ASP e banco de dados

Sistema para que as opções de um select se vinculem ao que foi selecionado em outro select, mantendo todas as opções em um banco de dados.

Por Eugenia Bahit


Publicado em: 05/10/06
Valorize este artigo:
Este é um sistema de "selects dependentes" (ou seja, que interagem um com outro), tomando de uma só vez os dados desde uma banco de dados Access.

Só será necessário 1 módulo ASP (selecs_dependentes.asp) e o banco de dados correspondente (ssdd.mdb).

Referência: Temos outro exemplo de selects dependentes no qual se trabalha unicamente do lado do cliente com Javascript, para quem se interessar de mais uma opção como essa.

Neste exemplo, se trabalhará com dois selects:

- Um de países
- Outro de províncias ou estados

Banco de dados ssdd.mdb
O banco de dados deverá conter duas tabelas relacionadas entre si.

TABELA CAMPOS
paises idPais (autonumérico) [chave principal]
pais (texto)
provincias pais (numero)
idProvincia (autonumérico) [chave principal]
provincia (texto)

Com uma relação entre tabelas como esta:




selects_dependentes.asp

A página ASP é bastante simples de entender. Trata-se de um script para construir os dois campos select a partir dos valores do banco de dados.

A primeira vez que carregar a página se mostrará unicamente o primeiro campo select com os valores que extrai da tabela de países. Incluímos ao campo select o evento Javascript onchange para que, no momento que mude a opção selecionada, se carregue a página passando por parâmetro o identificador do país selecionado.

A segunda vez que carregar a página -porque foi mudado o valor do primeiro select- receberá pela URL o identificador do país selecionado. Então mostra o segundo select com as opções relacionadas com o país que recebe por parâmetro, ou seja, se foi selecionado o país Argentina, se carregará unicamente as províncias desse país.

O código do exemplo ficaria desta maneira:

<form name=formulario>
PAÍS: <select name=idPais onChange="location.href('selects_dependentes.asp?idPais=' + formulario.idPais.options[formulario.idPais.selectedIndex].value)">
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("ssdd.mdb"))

SQL_pais="select * from paises order by pais asc"
set RS_pais=createobject("ADODB.Recordset")
RS_pais.open SQL_pais,conn
do while not RS_pais.eof
pais = RS_pais("pais")
idPais = RS_pais("idPais")
p = request.querystring("pais")
    if p <> "" then

        if p = pais then
        response.write "<option value="&idPais&"&pais="&pais&" selected>"&pais&"</option>"
        elseif p <> pais then
        response.write "<option value="&idPais&"&pais="&pais&">"&pais&"</option>"
        end if
else
response.write "<option value="&idPais&"&pais="&pais&">"&pais&"</option>"
end if

RS_pais.movenext
loop
RS_pais.close
%>
</select>
<% if request.querystring("idPais") <> "" then %>
PROVINCIA: <select name=localizacao>
<%
SQL_prov="select * from provincias where pais="&request.querystring("idPais")&" order by provincia asc"
set RS_prov=createobject("ADODB.Recordset")
RS_prov.open SQL_prov,conn
do while not RS_prov.eof

pais = request.querystring("pais")
provincia = RS_prov("provincia")
%>
<option value="<%=provincia%>, <%=pais%>"><%=provincia%></option>
<%
RS_prov.movenext
loop
RS_prov.close
%>
</select><% end if %></form>






Comentários do artigo
Foram enviados 3 comentários ao artigo
2 comentários não revisados
1 comentário revisado:
Relacionamentos
Por: leandro-silva
08/3/09
Gostaria se possivel que vcs nos ajudasse a fazer relações no mysql-Obrigado

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato