Ir para conteúdo
Fórum Script Brasil
  • 0

Select


ViniciusJau

Pergunta

Se a pessoa seleciona em um campo menu de lista ( select ) o Estado .. os campos do outro menu Cidade se alteram.....

alguém tem diéia de como eu posso fazer isso ??

por exemplo:

<body>

<p>

  <select name="Estado">

    <option value="sao_paulo">SP</option>

    <option value="rio_de_janeiro">RJ</option>

    <option value="mato_grosso">MT</option>

  </select>

</p>

<p>

  <select name="Cidade">

  </select>

</p>

dai no campo cidade ele busca os valores no banco de dados... alguém tem algum exemplo ou sabe indicar algum tudo legal que fale sobre isso ???

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Da pra fazer em ASP, da uma olhada nesse artigo que achei nos meus favoritos que fala sobre relacionamento de combos:

Uso de 2 combos ligadas entre si

Escrevo este artigo, pois sei que todos aqueles que estão a começar precisam de algo parecido com aquilo que aqui escrevo. A idéia é ter 2 Combo boxes, em que a segunda é carregada com dados consoante a escolha feita na primeira Combo. Normalmente a solução mais rápida seria o uso de Javascript, mas se tivermos muitos dados isso torna-se muito pesado, porque o uso desde Scripting obriga o carregamento prévio de tudo o que estiver em base de dados, enquanto com a solução em ASP (esta que vou explicar) os dados só são puxados por pedido, e assim a performance final, para grandes soluções fica a beneficiar. O que falha claro, é o fato de ter de ser feito um refresh á página por cada vez que é feita uma nova escolha na primeira combo, mas que julgo ser suportável, pelo menos para mim é.

A base de dados

A base de dados que uso, é novamente em MS-Access, que serve como exemplo e julgo ser de mais fácil acesso, para quem programa nesta linguagem.

Uso 2 tabelas, muito simples com os seguintes esquemas:

Tabela Combo1:

id_combo1 | AutoNumber

nome_combo1 | Text

Tabela Combo2:

id_combo2 | AutoNumber

id_combo1 | Number

nome_combo2 | Text

A segunda tabela como é 'filha' da primeira, cada linha de informação tem de ter a referência do 'pai' da tabela Combo1. e assim quando escolhemos a informação da Combo1, podemos ir á segunda buscar a informação referente com o id da primeira.

Este único ficheiro para o efeito, tem então duas combo boxes, em que a segunda é 'enchida' com dados depois de escolhermos um dos campos da primeira. Claro que o programador pode usar a opção 'onchange' e fazer este passo automaticamente. Eu fiz assim porque julgo de mais fácil compreensão, e depois o programador pode fazer as alterações que julgue necessárias.

Arquivo Combo.ASP:

<%

Sub Combo1()' função que trabalha com a combo inicial

'vamos fazer a declaração de SQL para encher a Combo

SQLStmt = "SELECT id_combo1, nome_combo1 FROM combo1"

'Executamos a declaração na Base de Dados

rs.Open SQLStmt, conn, 2, 1

'vamos construir o HMTL da primeira combo

Response.Write"<font face='Verdana,Arial' size='2'>"

Response.Write"<b>combo inicial </b></font>"

Response.Write"<SELECT name='combo1'>"

'vamos percorrer o RecordSet referente ás cidades

while not rs.EOF

'construímos cada cidade na combo

Response.Write"<OPTION "

'se a escolha anterior for igual à do momento, deixamo-la escolhida

if CInt(Request.Form("combo1"))= rs(0) then

Response.Write"selected "

end if

Response.Write"value='"&rs(0)&"'>"&rs(1)&"</OPTION>"

rs.MoveNext

wend

Response.Write"</SELECT><br><br><br>"

Response.Write"<INPUT type='Submit' value='OK'><br><br><br>"

rs.close

End Sub

Sub Combo2()' aqui construímos a combo referente às freguesias

id_combo1 = Request.Form("combo1")

'se não houver escolha na combo das cidades, é como termos 0

if id_combo1 = "" then

id_combo1 = 0

end if

'vamos fazer a procura de freguesias referentes ao

'id da cidade escolhida

SQLStmt = "SELECT id_combo2, nome_combo2 FROM combo2 "

SQLStmt = SQLStmt & "WHERE id_combo1=" & id_combo1

'executamos o recordset

rs.Open SQLStmt, conn, 2, 1

'construímos a combo das freguesias

Response.Write"<font face='Verdana,Arial' size='2'>"

Response.Write<b>combo secundária </b></font>"

Response.Write"<SELECT name='combo2'>"

while not rs.EOF

Response.Write"<OPTION "

'aqui também se controla se houve escolha antes,

'para não perdermos a sua visualização

if CInt(Request.Form("combo2"))= rs(0) then

Response.Write"selected "

end if

Response.Write"value='"&rs(0)&"'>"&rs(1)&"</OPTION>"

rs.MoveNext

wend

Response.Write"</SELECT>"

rs.close ' fechar o recordset

End Sub

' criação de uma conexão DSNLess

conn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="

conn = conn & Server.Mappath("combos.mdb") & ";"

' inicialização do bjecto do recordset

Set rs = Server.CreateObject("ADODB.Recordset")

' criação do formulário que vai suportar ambas as combos

Response.Write"<FORM name='form1' action='combos.asp'"

Response.Write" method='POST'>"

' vamos chamar a combo 1

Call Combo1()

' e vamos também chamar a combo 2

Call Combo2()

' finalizamos o formulário com a Tag para o efeito

Response.Write"</FORM>"

%>

Boa programação!

Autor: João Vieira - (developer@joaovieira.com)

Mais acho que o ideal seria fazer em Javascript da uma olhada na sessão de JS que você certamente vai achar alguma coisa

Link para o comentário
Compartilhar em outros sites

  • 0

legal... java com asp ficou legal também.. hehe o ruim é que eu já fiz meu banco no acess heheh..

tipo eu tentei usar esse codigo, executando local ele deu esse erro:

Provider error '80004005' 
Erro não especificado 
/combo/combo.asp, line 47 

a linha 47 é a que executa o recordset

rs.Open SQLStmt, conn, 2, 1

mais aconteceu um negocio estranho, pois eu mandei pro servidor , ele ele ficou asim: http://www.apaejau.org.br/combo.asp

hehe estou dando uma mexida nesse aqui em js !!

Link para o comentário
Compartilhar em outros sites

  • 0

esse erro não especificado aí, acontece na linha que executa o sql, né?

posta o sql aí..

Link para o comentário
Compartilhar em outros sites

  • 0

esse erro não especificado aí, acontece na linha que executa o sql, né?

posta o sql aí..

ixi viajei huh.gif ... seria essa parte aqui ??

<%
Sub Combo1()' função que trabalha com a combo inicial
'vamos fazer a declaração de SQL para encher a Combo
SQLStmt = "SELECT id_combo1, nome_combo1 FROM combo1"
'Executamos a declaração na Base de Dados
rs.Open SQLStmt, conn, 2, 1

mais porque que testando local ele deu um erro diferente de qunado eu rodo ele no servidor ??

Link para o comentário
Compartilhar em outros sites

  • 0

Isso pode ser problemas na conexao ao banco.

no caminho do banco

permissoes

componentes

Depende muito..

Só que, quando dá erro não especificado, não tem como saber o que é..

Esse erro, sempre que eu tive, era problema na conexao..

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...