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

combo dinâmico


marvi

Pergunta

Pessoal, tenho esse combo dinâmico... Mas como faço ele entrar em um loop e gerar vários combos?

Pois se vai ter o loop dos compos ele tem que está com nomes diferentes...fiz isso mas não deu certo...

O problema é que esse estado.asp aí vai ser chamado pelo combo então ele não entrou em loop e dar problema para saber quem ele é, já que fica sem referencia de nome no campo do estado.asp por causa do loop.. para não ficar com dois ou mais campos com nomes iguais...dependendo da quantidade do loop

Default.asp

for i=1 to session("qtitem") 

&lt;script src="funcoescombo.js" type="text/javascript"></script>


<% 


dim conexao

call abre_conexao

%>

<%

sql = "SELECT * from fabricantes"
set tab = conexao.execute(sql)

%>
<select name="paises<%=i%>" id="paises<%=i%>" onchange="RetornoAjax(this.value, 'estados.asp', 'estados<%=i%>')" style="color: #000000">
<option>Fabricante</option>
<% 
conta = 0
while not tab.eof 

sArtista = tab("nome")
codigo = tab("id_fabricante")
conta = conta +1



if conta = 1 Then

%>
<option value="<%= tab("nome")%>"><%= tab("nome")%></option>
<% end if
tab.moveNext

If Not tab.EOF Then
If tab("nome") <> sArtista Then
conta = 0
End If
End If




wend
%>
</select></td>
<div name="estados<%=i%>" id="estados<%=i%>"><select style="color: #A6A6A6"><option value="">Bairro</option></select></div>
<%next%>
Função:
function RetornoAjax(id, url, container)
{
if (id == "")
{
document.getElementById("estados").innerHTML = "<select></select>";
document.getElementById("cidades").innerHTML = "<select></select>";
document.getElementById("preço").innerHTML = "<select></select>";
return
}

var xmlHttp=GetXmlHttpObject()

if (xmlHttp==null)
{
alert ("Este browser não suporta HTTP Request")
return
}

var url=url;
url=url+"?id="+id;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=function()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById(container).innerHTML=xmlHttp.responseText;
}
}
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}

function GetXmlHttpObject()
{
var objXMLHttp=null

if (window.XMLHttpRequest)
objXMLHttp=new XMLHttpRequest()
else if (window.ActiveXObject)
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

return objXMLHttp
}
Página chamada estados.asp:
<!--#include file="conexao_dados.asp"-->
<% 


dim conexao

call abre_conexao

%>

<%
Response.Charset = "ISO-8859-1"
call abre_conexao
id = request.querystring("id")


sql = "SELECT * from fabricantes where nome='"&id&"'"
set tab = conexao.execute(sql)
%>
<select name="estados<%=i%>" id="estados<%=i%>" onchange="RetornoAjax(this.value, 'cidades.asp', 'cidades')">
<option value="">tipo</option>
<% 

conta = 0

while not tab.eof 
sArtista = tab("tipo")
codigo = tab("id_fabricante")
conta = conta +1


if conta = 1 Then
%>
<option value="<%=tab("tipo")%>|<%=tab("id_fabricante")%>"><%=tab("tipo")%></option>
<% end if
tab.moveNext

If Not tab.EOF Then
If tab("tipo") <> sArtista Then
conta = 0
End If
End If




wend
%>
</select>

O problema é que esse estado.asp aí vai ser chamado pelo combo então ele não entrou em loop e dar problema para saber quem ele é, já que fica sem referencia de nome no campo do estado.asp por causa do loop.. para não ficar com dois ou mais campos com nomes iguais...dependendo da quantidade do loop

Editado por marvi
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

É assim...

Entre aqui http://www.ideiabiz.com/eletrofone/inserirprodutos.asp e libere o POP-UP e digite 2 e vai gerar um loop com dois Itens "Produtos / Itens 1" e "Produtos / Itens 2" e dentro dele tem um combo dinamico chamado fabricante, como fazer os combos que serão chamados depois (por causa da seleção fabricante) ser numerado pelo loop ?

E o estado.asp só aparecere depois quando for selecionado o combo principal... mas ele não estava no loop logo quando foi gerado o loop, ele apareceu depois por ser chamado pelo outro combo...

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

Pô Marcelo... tu sempre trazendo essas cascas pra cá! traz um troço mais facinho ae! rssssssssssssss...

Cara... continuei não entendendo...

esses combos que você fala são esses selects? cara... não entendi que diferençla tem o select de um input qualquer?

Se é porque precisam trazer resultados do bd tb, porque não faz uma nova query pra cada um? Não resolveria o problema?

[]'s Rafael Spilki

Link para o comentário
Compartilhar em outros sites

  • 0

Pô Marcelo... tu sempre trazendo essas cascas pra cá! traz um troço mais facinho ae! rssssssssssssss...

O sistema aqui é pesado mesmo hehhehe

Esses combos que você fala são esses selects? cara... não entendi que diferençla tem o select de um input qualquer?

Você viu a seção Produtos / Itens 1 que vem abaixo da faixa Compra de produto? Ela é única e é gerada em loops, se caso queira mais Produtos / Itens tenho que digitar números logo quando abre a página como POP-UP, dentro dele tem o combo fabricante, se você selecionar um fabricante no primeiro loop (Produtos / Itens 1) ele vai aparecer outro combo em baixo chamado Tipo de produto...

Se você for para o Produtos / Itens 2 (caso tenha gerado 2 loops) ele gera outro campo abaixo também chamado Tipo de produto... e o problema é que esse combo abaixo (Tipo de produto) fica com o mesmo nome do combo de cima (Produtos / Itens 1) (Tipo de produto) pois na hora do loop ele não estava lá, só apareceu depois que selecionamos o combo fabricante, entendeu?

Aí fui colocando um combo que chama o outro e virou bagunça... o combo Produtos / Itens 2 acaba aprecendo no combo da seção Produtos / Itens 1... entendeu? Pois só tem um nome só.

Então no loop preciso numerá-lo como foi com os outros campos do formulário lá que é duplicado... Mas aí que está, como vou numerar o combo que ainda não foi chamado?

Um chama o outro, são relacionados...

Veja como está: http://www.ideiabiz.com/eletrofone/inserirprodutosok1.asp e libere o POP-UP para digitar os numeros de loops

Editado por marvi
Link para o comentário
Compartilhar em outros sites

  • 0

hahah... só brincadeira... ;-)

Cara.. acho que o grande problema aqui é lógica... e não programação em si...

Não tenho uma dica pra lhe dar nem nada... sei q c sabe fazer isso daí... vai ter que fazer zilhões de testes até acertar...

Eu repensaria alguns quesitos lógicos da coisa toda... tá tão confuso que até pra você explicar é difícil... e isso aí deveria ser bem simplesinho... são só inputs... não nescessitam soluções mirabolantes, sacou?

Eu iria por esse caminho...

Forte abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

bom seu problema é recuperar os dados dos imputs que vem com mesmo nome....

como

produto1 e produto2...

bom usamos do seguinte raciocinio....

um form com preenchimento obrigatorio nos combos dinâmicos... o resto e fixo e pode ser nomeado facil... então fica o seguinte....

2 combos com valores diferentes no request.form("campo")

resulta em =resultadocampo1, resultado campo2

bastaria usar um split e um for para separar os resultados, mesmo q os campos tenham o mesmo nome.

Link para o comentário
Compartilhar em outros sites

  • 0

A questão não é na hora de enviar... é dar os nomes aos campos no loop...

Se todos os combos fosse na mesma página, o loop pegaria os combos lá... mas a questão é que cada combo chama uma função que pega o combo em outra página e devolve o restuado em uma DIV na página onde tem o loop...

No primeiro loop

for i=1 to total

Combo 1<%=i%> = celular sansung

Combo 2<%=i%> = marca de celular sansung

combo 3<%=i%> = cor de celular sansung

next

No segundo loop

for i=1 to total

Combo 1<%=i%> = celular motorola

Combo 2<%=i%> = marca de celular motorola

combo 3<%=i%> = cor de celular motorola

next

Mas acho que achei uma lógica aqui e até agora rodou! Se caso alguém poste algo aqui no forum eu vejo para ver se foi melhor e otimizo o código

Só vou fazer o teste de enviar para ver se vai mesmo...

Valeu!

Link para o comentário
Compartilhar em outros sites

  • 0

Legal... nos mantem informados... mas assim... essa questão de nomear é sempre igual... um jeito muito bom de fazer isso é com aquele contador que já te passei uma vez...

n=1 fora do loop depois o input<%n%>

depois n= n+1....

sempre funciona comigo... mas acho melhor retomar a lógica tb... ta muito embaralhada! ;-)

Link para o comentário
Compartilhar em outros sites

  • 0
A questão não é na hora de enviar... é dar os nomes aos campos no loop...

Se todos os combos fosse na mesma página, o loop pegaria os combos lá... mas a questão é que cada combo chama uma função que pega o combo em outra página e devolve o restuado em uma DIV na página onde tem o loop...

No primeiro loop

for i=1 to total

Combo 1<%=i%> = celular sansung

Combo 2<%=i%> = marca de celular sansung

combo 3<%=i%> = cor de celular sansung

next

No segundo loop

for i=1 to total

Combo 1<%=i%> = celular motorola

Combo 2<%=i%> = marca de celular motorola

combo 3<%=i%> = cor de celular motorola

next

Mas acho que achei uma lógica aqui e até agora rodou! Se caso alguém poste algo aqui no forum eu vejo para ver se foi melhor e otimizo o código

Só vou fazer o teste de enviar para ver se vai mesmo...

Valeu!

bom mais mesmo q use essa lógica vai ficar igual.... combo 11 / 22 e 33... tem q ter um outro item pra nomear ainda...

Link para o comentário
Compartilhar em outros sites

  • 0

Não, eu fiz de outra forma... Ai era só o exemplo... Eu peguei o numero do loop que fica no primeiro combo e repassei para os outros combos que vão aparecer quando vão selecionando os combos...

Se deu loop 1, o primeiro combo pega o numero 1 ficando combo1, por exemplo, os outros combos é que não pegava nada... então peguei esse 1 e conseguir passar para os outros combos...ai todos tem o seu nome mais o numero, assim ficam diferente do loop 2 (o segundo loop), que por sua vez vai ficar diferente do loop3 e assim vai...

Se deu loop 2, o primeiro combo pega o numero 2 ficando combo2, por exemplo, os outros combos é que não pegava nada... então peguei esse 2 e conseguir passar para os outros combos...ai todos tem o seu nome mais o numero 2, neste caso...

Valeu!

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,5k
×
×
  • Criar Novo...