Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ameliacover

combo dinamico

Recommended Posts

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);">
<% While NOT Rs.EoF %> 
<option value="<% = Rs("id") %>"><% = Rs("Marca") %></option>
<% Rs.MoveNext %> 
<% Wend %> 
</select>
<br><br>Carros:<br>
<select name="carros"></select>
</form>
</body>
</html> 
<%
'Fechando os objetos! 
Rs.Close
Set Rs = Nothing

Conexao.Close
Set Conexao = Nothing 
%> 

 

obrigada a todos pela atenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

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");
} else {
xmlHttp = new XMLHttpRequest();
   }
return xmlHttp;
}

//aqui é o codigo que faz buscar outra pagina dinamicamente
var mod = GetXMLHttp();
function alimentarCombo(valor) {
mod.open("Get", "Ajax_marcas.asp?id="+valor+"", true); //coloque o nome da pagina que você vai chamarpassando o id
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
%>   
</SELECT>
aqui é a div que vai trazer as marcas, tudo que estiver dentro da div sera trocado
<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
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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");
} else {
xmlHttp = new XMLHttpRequest();
   }
return xmlHttp;
}

//aqui é o codigo que faz buscar outra pagina dinamicamente
var mod = GetXMLHttp();
function alimentarCombo(valor) {
mod.open("Get", "Ajax_marcas.asp?id="+valor+"", true); //coloque o nome da pagina que você vai chamarpassando o id
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
%>   
</SELECT>
aqui é a div que vai trazer as marcas, tudo que estiver dentro da div sera trocado
<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
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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%>




Compartilhar este post


Link para o post
Compartilhar em outros sites

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..."); 
document.busca_nome.nomehotel.focus() 
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) 
{ 
// an option has been selected } else { // no option selected 
}}
</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>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente passar os dados em uma session para ver e depois recupére-as, faça o teste

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.