Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi turma, preciso de ajuda para adaptar o script abaixo que é para dois select (duas tabelas) para três, esse script consegui aqui mesmo mas não consegui ajuda do autor, vejam:
O script é de Marcas > Carros, preciso para Estados > Cidades > Bairros, assim:
Inicio Script:
<%
Function EscreveFuncaoJavaScript ( Conexao )
'O parametro conexao receberá uma conexao aberta!
'Em funcoes, geralmente não criamos objetos do tipo conexões!
'Opte por sempre deixar sua função o mais compatível possível com qualquer projeto!
'Primeiro vamos escrever o cabecalho de qualquer script javascript!
Response.Write "<script language=""JavaScript"">" & vbcrlf
Response.Write "function atualizacarros (form) {" & vbcrlf
'Essa função JavaScript recebe o form em que estão os campos a serem atualizados!
'Veja na chamada da função no método OnChange em que se passa o this.form!
'Vamos criar um switch para ele verificar qual opção foi selecionada!!
Response.Write "switch (form.marcas.options[form.marcas.selectedIndex].value) {" & vbcrlf
'Agora entramos com o banco de dados! Temos que jogar aqui todas as opções de carro!
SqlMarcas = "SELECT * FROM Marcas ORDER BY Marca"
Set rsMarcas = Conexao.Execute ( SqlMarcas )
While NOT rsMarcas.EOF
'Caso tenha sido essa marca selecionada...
Response.Write "case '" & rsMarcas("ID") & "':" & vbcrlf
'Apagamos tudo o que tem na caixa dos carros!
Response.Write "form.carros.length=0;" & vbcrlf
'Abrimos todos os carros relativos a essa marca!
SqlCarros = "SELECT ID, Carro FROM Carros WHERE Marca = " & rsMarcas("ID")
Set rsCarros = Conexao.Execute ( SqlCarros )
'Fazemos um loop por todos os carros, criando uma nova opção no SELECT!
i = 0
While NOT rsCarros.EoF
Response.Write "form.carros.options[" & i & "] = new Option('" & rsCarros("carro") & "','" & rsCarros("ID") & "');" & vbcrlf
i=i+1
rsCarros.MoveNext
Wend
'Imprimos um break! (Verifique tutoriais de JavaScript, se tiverem alguma dúvida da sua utilização!
Response.Write "break;" & vbcrlf
'Próxima marca!
rsMarcas.MoveNext
Wend
'Fecha chaves do switch e da função! E fecha o script!
Response.Write "}}" & vbcrlf & "</script>" & vbcrlf
End Function
%>
Fim Script:
<%
'Criando conexão com o banco de dados!
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "Provider=Microsoft.Jet.OleDB.4.0;Data Source=" & Server.MapPath("carros.mdb")
'Abrindo a tabela MARCAS!
Sql = "SELECT * FROM Marcas ORDER BY Marca"
Set Rs = Conexao.Execute ( Sql )
%>
<html>
<head><% EscreveFuncaoJavaScript ( Conexao ) %></head>
<body>
<form name="iMasters">
Marcas:<br>
<select name="marcas" onChange="javascript:atualizacarros(this.form);"></select>
<br><br>Carros:<br>
<select name="carros"></select>
</form>
</body>
</html>Conexao.Close
Set Conexao = Nothing
%>
obrigada a todos pela atenção
Oi Anderson, muito obrigada pela sua atenção...
Acho que não me fiz entender...
Eu preciso de um script para três tabelas ( Estados > Cidades > Bairros ), que funcionaria assim: Quando selecionar o Estado preencha o select Cidades e selecionando a Cidade preencha o select Bairros e as três informações ficariam na tela ( o Estado > a Cidade > e o Bairro ).
No script que tenho é para duas tabelas e eu não consegui adaptar para 3 tabelas, esse script original é para carros .
Até mais...
Amélia
>
Tenho um script mais facil se voce quiser :
<script language="javascript" >
// eassa funçaõ só seta algumas configurações
function GetXMLHttp() {
if (navigator.appName == "Microsoft Internet Explorer") {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
//aqui é o codigo que faz buscar outra pagina dinamicamente
var mod = GetXMLHttp();
function alimentarCombo(valor) {mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
mod.onreadystatechange = function() {
if (mod.readyState == 4) {
document.getElementById("marcas").innerHTML = mod.responseText; // coloque o id de uma div que vai trazer a pagina pra dentro dela.
}
};
mod.send(null);
}
</script>
<SELECT style="width:300px" name="empresa" class="campos_formulario" Onchange="alimentarCombo(this.value);">
<OPTION value=""></OPTION>'faz sua consulta de carros no select passando o id no value e no select chama o JS
Set EmpRS= Server.CreateObject("ADODB.Recordset")
strQL = "SELECT * FROM carros "
EmpRS.Open strQL, strCon
While Not EmpRS.EOF
Response.Write "<OPTION value="""&EmpRS("id")&""">"&EmpRS("carro")&"</OPTION>"
EmpRS.MoveNext
Wend
EmpRS.close
SET EmpRS = nothing<div id="marcas"><SELECT style="width:300px" name="masrcas" class="campos_formulario" >
<option></option>
</SELECT>
</div>aqui esta a pagina a ser incluida dinamicamente:
<%
Set cnn = Server.CreateObject("adodb.Connection")
'aqui recupera o id que o js esta passando
id = Request("ID")
'faz uma consulta nas marcas filtrando pelo id do carro
Set rs = Server.CreateObject("ADODB.Recordset")
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
sql = "Select * FROM marcas where id_arro='"&id&"' "
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
rs.Open sql,strCon,3
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
%>
<SELECT style="width:300px" name="marcas" class="campos_formulario">
<option value="">Selecione</option>
<%
while not rs.eof
%>
<option value="<%=RS("id_marca")%>" ><%=RS("nome")%></option>
<%
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
rs.MoveNext
Wend
%>
</SELECT>
<%
rs.Close
Set rs = Nothing
%>
você também pode usar AJAX ou olha este exemplo,este script faz o preenchimento de um combo e pega o valor do combo preenchido pra fazer o outro combo, tipo:
um combo pais e outro combo estado
as tabelas são:
pais- com os campos
cod_pais - chave primária
nome
estado -c om os campos
cod_pais - chave estrangeira
cod_estado
nome
as tabelas possuem relacionamento de um para muitos
<% Option Explicit
'declaro as var
dim var1,var2,var3,....., etc
'recupero as var
varpais=request.querystring("pais")
'crioa a conexao
%>
<!--# include file="conexao/conexao.asp"-->
<%
'abro a conexao
Call abre_conexao
'crio o rs
set rspais=server.createobject("ADODB.Recordset")
'crio a SQL
SQLpais="SELECT * FROM pais ORDER BY nome"
rspais.open SQLpais,conexao,1,3
%>
'aki vou criar o combo, onde no evento onchange ele irá enviar o value do combo pais para a mesma pag, para eu recuperar o codigo do pais e assim preencher o combo estado.
<form action="inserirend_action.asp" method="post"name="frmteste">
<select name="pais" size="1" Onchange="window.navigate('pag_atual.asp?pais='+frmteste.pais.value)">
<% while not rspais.eof%>
<option value="<%=rs("cod_pais")%>">
<% if varpais=rs("pais") then
response.write("Selecionado")
end if%>
<%=rs("nome")%>
</option>
<% rspais.movenext
wend%>
</select>
<% set rspais=nothing%>
'aki crio o combo estado
<select name="estado"size="1">
if request("pais") ="" then%>
<option value=""> selecione um pais
<%else
'crio o SQL estado
SQLestado="Select * from estado where cod_pais="&varpais&" Order by nome"
'crio o rsestado
set rsestado=server.createobject("ADODB.Recordset")
rsestado.open SQLestado,conexao,1,3
<%while not rsestado.eof%>
<option value="<%=rsestado("cod_estado")%>">
<%=rs("nome")%>
</option>
<%rs.movenext
wend
end if%>
</select>
<% set rsestado=nothing%>
<% 'fecho a conexao
call fecha_conexao%>
Amigos, preciso de uma ajuda.
Não sei mais o que fazer. Tenho o combo funcionando perfeitamente no IE mas no Firefox ele perde os dados. Já tentei de tudo, alguém poderia me ajudar... meu chefe tá me pressionando diariamente...rsrsrsrs
Abaixo, segue o código:
<%
'#Função que tira todos os acentos das palavras
function TiraAcento(StrAcento)
for i = 1 to len(StrAcento)
Letra = mid(StrAcento, i, 1)
Select Case Letra
Case "á","Á","à","À","ã","Ã","â","Â","â","ä","Ä"
Letra = "A"
Case "é","É","ê","Ê","Ë","ë","È","è"
Letra = "E"
Case "í","Í","ï","Ï","Ì","ì"
Letra = "I"
Case "ó","Ó","ô","Ô","õ","Õ","ö","Ö","ò","Ò"
Letra = "O"
Case "ú","Ú","Ù","ù","ú","û","ü","Ü","Û"
Letra = "U"
Case "ç","Ç"
Letra = "C"
Case "ñ"
Letra = "N"
End Select
texto = texto & Letra
next
TiraAcento = texto
end function
%>
<link href="css/filtrohoteis.css" rel="stylesheet" type="text/css" />
<script language="javascript">
function setPlano(objStatus) {
document.all.item("divVarPlano").style.visibility = objStatus;
}
function SubmitState(iState) {
document.hoteis.VARESTADO.selectedIndex = iState;
if (frmCheck()) document.hoteis.submit();
}
function manda(){
var p = document.hoteis;
p.submit();
}
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
// Função que verifica se os campos do formulário estão em branco.
function valida_campo()
{
var nomehotel = document.busca_nome.nomehotel.value
if (nomehotel=="")
{alert("O campo está vazio. É obrigatório o preenchimento do campo...");return false
}
}
function GetXMLHttp() {
if (navigator.appName == "Microsoft Internet Explorer") {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} else {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp;
}
var mod = GetXMLHttp();
function alimentarCombo(valor) {
mod.open("GET", "Carrega_ajax.asp?id="+valor+"", true);
mod.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
mod.onreadystatechange = function() {
if (mod.readyState == 4) {
document.getElementById("resultado").innerHTML = mod.responseText;
}
};
mod.send(null);
}
function valida_campo2()var varestado = document.busca_hoteis.varestado.value
if(form.busca_hoteis.selectedIndex > 0)</script>
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-2285354-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
<table width="214" border="0" cellpadding="0" cellspacing="6">
<form name="busca_nome" method="post" action="resultado_busca_nome_hotel.asp">
<tr>
<td><img src="imagens/titulos/titulo_nomehotel.png" width="97" height="10" alt="PAis" /></td>
</tr>
<tr>
<td><input name="nomehotel" type="text" class="" id="Hotel" size="28"/>
</td>
</tr>
<tr>
<td valign="0"><label><input name="Submit" type="image" onClick="return valida_campo();" value="Ok" src="imagens/master/botao_buscar.png">
</label>
</td>
</tr>
</form>
</table>
<br />
<table width="" border="0" cellpadding="0" cellspacing="0">
<form name="buca_hoteis" method="post" action="resultado_hoteis.asp">
<tr>
<td><img src="imagens/titulos/tit_hotel_pais.png" width="25" height="13" alt="PAis" />
</td>
<td> </td>
<td>
<select name="select" class="input" id="select" onchange="MM_jumpMenu('parent',this,0)">
<option value="" selected="selected">Brasil</option>
<option value="portugal.asp">Portugal</option>
<option value="rede_internacional.asp">Rede Internacional</option>
</select>
</td>
</tr>
<tr>
<td><img src="imagens/titulos/tit_hotel_estado.png" width="45" height="10" alt="estado" /></td>
<td> </td>
<td>
<select name="varestado" class="input" id="varestado" onchange="alimentarCombo(this.value);">
<option value="AL">Alagoas</option>
<option value="AP">Amapá</option>
<option value="AM">Amazonas</option>
<option value="BA">Bahia</option>
<option value="CE">Ceará</option>
<option value="DF">Distrito Federal</option>
<option value="ES">Espírito Santo</option>
<option value="GO">Goiás</option>
<option value="MA">Maranhão</option>
<option value="MT">Mato Grosso</option>
<option value="MS">Mato Grosso do Sul</option>
<option value="MG">Minas Gerais</option>
<option value="PA">Pará</option>
<option value="PB">Paraíba</option>
<option value="PR">Paraná</option>
<option value="PE">Pernambuco</option>
<option value="PI">Piauí</option>
<option value="RJ">Rio de Janeiro</option>
<option value="RN">Rio Grande do Norte </option>
<option value="RS">Rio Grande do Sul</option>
<option value="RO">Rondônia</option>
<option value="RR">Roraima</option>
<option value="SC">Santa Catarina</option>
<option value="SP">São Paulo</option>
<option value="SE">Sergipe</option>
<option value="TO">Tocantins</option>
<option value="00" selected>Todos</option>
</select>
</td>
</tr>
<tr>
<td><img src="imagens/titulos/tit_hotel_cidade.png" width="44" height="10" alt="Cidade" /></td>
<td> </td>
<td> <div id="resultado"></div> </td>
</tr>
<tr>
<td><img src="imagens/titulos/tit_hotel_plano.png" width="38" height="10" alt="Plano" /></td>
<td> </td>
<td><select name="varplano" class="input" id="varplano">
<option value="1">VIP / Master</option>
<option value="2">Gold VIP / Gold Master</option>
</select>
</td>
</tr>
<tr>
<td colspan="3" align="right">
<label>
<input name="busca_hoteis" type="image" onClick="return valida_campo2();" value="Ok" src="imagens/master/botao_buscar.png">
</label></td>
</tr>
</form>
</table>
E este alimenta o combo:
<!-- #include file="includes/adovbs.asp" -->
<!-- #include file="includes/functions.asp"-->
<%
'Abre a conexão com o banco de dados
Set ConexaoSql = Server.CreateObject("ADODB.Connection")
ConexaoSql.Open (ConStr)
If Err.Number <> 0 Then
ConexaoSql.close
ConexaoSql.Open (ConStr2)
End if
ConexaoSql.cursorLocation = 3
'Cria o objeto que executará um comando no banco de dados
Set Comando = Server.CreateObject("ADODB.Command")
Comando.ActiveConnection = ConexaoSql
Comando.CommandText = "sp_Hoteis_HP_Cidades_Divisoes"
Comando.CommandType = adCmdStoredProc
'Primeiro parâmetro a ser criado é o de retorno "Return"
Comando.Parameters.Append Comando.CreateParameter("Return", adInteger, adParamReturnValue)
'Define os parâmetros de entrada
Comando.Parameters.Append Comando.CreateParameter("@in_tp", adInteger, adParamInput, 4, 0)
Comando.Parameters.Append Comando.CreateParameter("@in_estado", advarchar, adParamInput, 3, request.queryString("id"))
Comando.Parameters.Append Comando.CreateParameter("@in_plano", advarchar, adParamInput, 2, 0)
'Cria o objeto que conterá os resultados da stored procedure
Set rstConsultaRede = Server.CreateObject("ADODB.Recordset")
'Executa o comando no banco de dados atribuindo à um Recordset
Set rstConsultaRede= Comando.Execute
%>
<select name="varcidade" id="varcidade" class="input">
<%
Do While Not rstConsultaRede.EOF
%>
<option value="<%=rstConsultaRede("cid_hot")%>" ><%=rstConsultaRede("cid_hot")%></option>
<%
rstConsultaRede.MoveNext
Loop
%>
</select>
tente passar os dados em uma session para ver e depois recupére-as, faça o teste
Tenho um script mais facil se voce quiser :
<script language="javascript" >
// eassa funçaõ só seta algumas configurações
} else {
//aqui é o codigo que faz buscar outra pagina dinamicamente
mod.open("Get", "Ajax_marcas.asp?id="+valor+"", true); //coloque o nome da pagina que você vai chamarpassando o id
<%
%>
</SELECT>
aqui é a div que vai trazer as marcas, tudo que estiver dentro da div sera trocado
"#################################################################################
aqui esta a pagina a ser incluida dinamicamente:
<%
Set cnn = Server.CreateObject("adodb.Connection")
'aqui recupera o id que o js esta passando
id = Request("ID")
'faz uma consulta nas marcas filtrando pelo id do carro
<% while not rs.eof %> <option value="<%=RS("id_marca")%>" ><%=RS("nome")%></option> <% '??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? rs.MoveNext Wend %> </SELECT>Set rs = Server.CreateObject("ADODB.Recordset")
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
sql = "Select * FROM marcas where id_arro='"&id&"' "
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
rs.Open sql,strCon,3
'???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
%>
<%
rs.Close
Set rs = Nothing
%>