Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Preciso de um help, estou tentando alimentar um segundo combox a partir de um select inicial
Minha tabela contem as seguintes colunas: DAT_ID, DAT_CATEGORY, DATE_NAME, DAT_PICTURE.
O que estou querendo com a função: Quero selecionar um nome cadastrado na coluna DAT_NAME e o segundo combobox trazer o nome da imagem cadastrada na coluna DAT_PICTURE automaticamente.
O que eu consegui até agora:
<!--#include file="../Connections/conn.asp" -->
<%
Dim rsTypeListing__MMColParam
rsTypeListing__MMColParam = "0"
If (Request.QueryString("iChannel") <> "") Then
rsTypeListing__MMColParam = Request.QueryString("iChannel")
End If
%>
<%
Dim rsTypeListing
Dim rsTypeListing_numRows
Set rsTypeListing = Server.CreateObject("ADODB.Recordset")
rsTypeListing.ActiveConnection = MM_connDUportal_STRING
rsTypeListing.Source = "SELECT * FROM DATAS WHERE DAT_ID ORDER BY DAT_DATED ASC"
rsTypeListing.CursorType = 0
rsTypeListing.CursorLocation = 2
rsTypeListing.LockType = 1
rsTypeListing.Open()
rsTypeListing_numRows = 0
%>
<%
Dim rsChannelListing
Dim rsChannelListing_numRows
Set rsChannelListing = Server.CreateObject("ADODB.Recordset")
rsChannelListing.ActiveConnection = MM_connDUportal_STRING
rsChannelListing.Source = "SELECT * FROM DATAS WHERE DAT_CATEGORY = 301 ORDER BY DAT_DATED ASC"
rsChannelListing.CursorType = 0
rsChannelListing.CursorLocation = 2
rsChannelListing.LockType = 1
rsChannelListing.Open()
rsChannelListing_numRows = 0
%>
<script language="javascript" src="../ScriptLibrary/incPureUpload.js"></script>
<table class="table">
<tbody>
<tr>
<td >CANAL:</td>
<td><select name="iChannel" class="input-text" id="iChannel" onChange="MM_jumpMenu('parent',this,0)">
<%
While (NOT rsChannelListing.EOF)
%>
<option value="submit.asp?iChannel=<%=(rsChannelListing.Fields.Item("DAT_ID").Value)%>&nChannel=<%=(rsChannelListing.Fields.Item("DAT_NAME").Value)%>" <%if (CStr(rsChannelListing.Fields.Item("DAT_ID").Value) = CStr(Request.QueryString("iChannel"))) then Response.Write("SELECTED") : Response.Write("")%>><%=(rsChannelListing.Fields.Item("DAT_NAME").Value)%></option>
<%
rsChannelListing.MoveNext()
Wend
If (rsChannelListing.CursorType > 0) Then
rsChannelListing.MoveFirst
Else
rsChannelListing.Requery
End If
%>
</select> </td>
</tr>
<% If Not rsTypeListing.EOF Or Not rsTypeListing.BOF Then %>
<tr>
<td align="right" nowrap>CATEGORIA:</td>
<td>
<select name="TYPE" class="input-text" id="TYPE">
<%
While (NOT rsTypeListing.EOF)
%>
<option value="<%=(rsTypeListing.Fields.Item("DAT_NAME").Value)%>"><%=(rsTypeListing.Fields.Item("DAT_PICTURE").Value)%></option>
<%
rsTypeListing.MoveNext()
Wend
If (rsTypeListing.CursorType > 0) Then
rsTypeListing.MoveFirst
Else
rsTypeListing.Requery
End If
%>
</select> </td></tr>
<% End If ' end Not rsTypeListing.EOF Or NOT rsTypeListing.BOF %>
<%
rsTypeListing.Close()
Set rsTypeListing = Nothing
%><%
rsChannelListing.Close()
Set rsChannelListing = Nothing
%>
Esta funcionando o primeiro Combobox, mas o segundo não carrega a informação de acordo com a primeira seleção, ele apenas carrega toda coluna.
Olá Willian, comigo tudo certo amigo e você como esta?
Cara, este que postou é mais enxuto do que eu havia achado, neste exemplo que postou ele usa duas tabelas.
Estou precisando fazer o contrário. Tenho apenas uma tabela com os campos: DAT_ID, DAT_CATEGORY, DATE_NAME, DAT_PICTURE
na verdade não posso usar outra tabela para fazer a dinamica, desta forma estou com um desafio aparentemente impossível: Fazer uma seleção no combobox e chamar uma segunda com o dado baseado na primeira.
Quase consegui.
Mas quero que ao escolher o primeiro combobox o segundo seja preenchido automaticamente com a informação da segunda coluna correspondente a seleção.
<!--#include file="../Connections/conn.asp" -->
<%
Dim rsChannelListing__MMColParam
rsChannelListing__MMColParam = "0"
If (Request.QueryString("iChannel") <> "") Then
rsChannelListing__MMColParam = Request.QueryString("iChannel")
End If
%>
<%
Dim rsChannelListing
Dim rsChannelListing_numRows
Set rsChannelListing = Server.CreateObject("ADODB.Recordset")
rsChannelListing.ActiveConnection = MM_connDUportal_STRING
rsChannelListing.Source = "SELECT * FROM DATAS WHERE DAT_CATEGORY = 301 ORDER BY DAT_DATED ASC"
rsChannelListing.CursorType = 0
rsChannelListing.CursorLocation = 2
rsChannelListing.LockType = 1
rsChannelListing.Open()
rsChannelListing_numRows = 0
%>
<table class="table">
<tbody>
<tr>
<td >CANAL:</td>
<td><select name="iChannel" class="input-text" id="iChannel" onChange="MM_jumpMenu('parent',this,0)"></select>
</td>
</tr><tr>
<td align="right" nowrap>CATEGORIA:</td>
<td>
<select name="TYPE" class="input-text" id="TYPE"></select>
</td>
</tr>
<% End If ' end Not rsChannelListing.EOF Or NOT rsChannelListing.BOF %>
<%
rsChannelListing.Close()
Set rsChannelListing = Nothing
%>
tem alguns exemplos de combobox aninhadas (dependentes) que postei no fórum, tanto com AJAX, banco de dados, txt... dá uma olhada vai te ajudar
Olá Xan,
Então eu achei seu código mas no seu exemplo você utiliza duas tabelas (parecido com o que o wilnet colocou de exemplo). No meu caso só tenho uma tabela e é nessa que estou trabalhando. Não há possibilidade de criar uma nova tabela pois mudaria toda estrutura do sistema
vc pode usar o modelo de txt ou xml, seria a mesma coisa, única diferença que não via pegar de outra tabela. Isso se aplica a qualquer tipo de fonte de dados
Mas para isso teria que criar um txt ja com as opções correto?
No meu caso é mais complicado. Veja, uso uma tabela geral de cadastros, dentre elas cadastro de times de futsal, toda vez que faço agendamento de um jogo importo a lista deste cadastro que esta nesta mesma tabela. O objetivo de manter em uma mesma tabela é o upload de imagens do distintivo de cada time.
seria a mesma coisa, ao invés de pegar outra tabela, vai pegar o campo seu, o correto seria uma outra tabela, pois assim pode deixar o relacionamento melhor. tipo imagine assim:
Paises-cidades-bairros
relacionamento um-para-muitos
um país pode ter várias cidades, como uma cidade pode ter vários bairros
no banco fica melhor organizado, pois vc
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 país e outro combo estado
as tabelas saun:
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%>
Fala Xan,
Cara desta forma é bem mais fácil, estava fazendo errado em minha lógica. Vou adapta-lo
Salvou mais essa. Obrigado brother!
beleza....
sucesso no code
Olá hudson, blza!
Não vou analisar seu code, pois ta muito grande...
Mas veja este exemplo, é bem simples de implementar ao que quer.
Eu já usei este e funciona legal.
http://codigofonte.uol.com.br/codigos/atualizando-combobox-utilizando-ajax
Basta você trocar os campos necessários.
Espero ter ajudado,
vlw