Ir para conteúdo

Arquivado

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

hudsonalves

Segundo combobox

Recommended Posts

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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)">
<%
While (NOT rsChannelListing.EOF)
%>
<option value="<%=(rsChannelListing.Fields.Item("DAT_NAME").Value)%>" selected><%=(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 rsChannelListing.EOF Or Not rsChannelListing.BOF Then %>
<tr> 
<td align="right" nowrap>CATEGORIA:</td>
<td> 
<select name="TYPE" class="input-text" id="TYPE">
<%
While (NOT rsChannelListing.EOF)
%>
<option value="<%=(rsChannelListing.Fields.Item("DAT_PICTURE").Value)%>"><%=(rsChannelListing.Fields.Item("DAT_PICTURE").Value)%></option>
<%
rsChannelListing.MoveNext()
Wend
If (rsChannelListing.CursorType > 0) Then
rsChannelListing.MoveFirst
Else
rsChannelListing.Requery
End If
%>
</select>
</td>
</tr>


<% End If ' end Not rsChannelListing.EOF Or NOT rsChannelListing.BOF %>
<%
rsChannelListing.Close()
Set rsChannelListing = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza....

 

sucesso no code

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.