Ir para conteúdo


Foto

combo dinâmico


10 respostas neste tópico

#1 marvi

marvi
  • Membros
  • 939 posts

Postado 16 dezembro 2008 - 15:33

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

CODE
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:

CODE
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:
CODE
<!--#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, 16 dezembro 2008 - 15:45 .


#2 bareta

bareta

    Mods Scripts e ADD-ONS para seu site. Moderador ASP

  • Moderadores
  • 6.682 posts
  • Gender:Male
  • Location:Maracaju / MS

Postado 16 dezembro 2008 - 15:42

boiei... se estado não esta no loop não seria o caso coloca-lo...

explica como essa bagaça ai funciona.. (ou como deveria^^)..

#3 marvi

marvi
  • Membros
  • 939 posts

Postado 16 dezembro 2008 - 15:53

É assim...


Entre aqui http://www.ideiabiz....rirprodutos.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, 16 dezembro 2008 - 16:17 .


#4 Rafael Spilki

Rafael Spilki
  • Veteranos
  • 1.584 posts
  • Gender:Male
  • Location:Porto Alegre

Postado 16 dezembro 2008 - 16:35

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
Não respondo dúvidas por MSN, MP ou E-mails! Nestes meios de comunicação trato apenas de assuntos profissionais! Por favor, não insista!

#5 marvi

marvi
  • Membros
  • 939 posts

Postado 16 dezembro 2008 - 17:10

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....produtosok1.asp e libere o POP-UP para digitar os numeros de loops

Editado por marvi, 16 dezembro 2008 - 17:12 .


#6 Rafael Spilki

Rafael Spilki
  • Veteranos
  • 1.584 posts
  • Gender:Male
  • Location:Porto Alegre

Postado 16 dezembro 2008 - 20:07

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!

Não respondo dúvidas por MSN, MP ou E-mails! Nestes meios de comunicação trato apenas de assuntos profissionais! Por favor, não insista!

#7 bareta

bareta

    Mods Scripts e ADD-ONS para seu site. Moderador ASP

  • Moderadores
  • 6.682 posts
  • Gender:Male
  • Location:Maracaju / MS

Postado 17 dezembro 2008 - 09:59

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.

#8 marvi

marvi
  • Membros
  • 939 posts

Postado 17 dezembro 2008 - 13:17

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!

#9 Rafael Spilki

Rafael Spilki
  • Veteranos
  • 1.584 posts
  • Gender:Male
  • Location:Porto Alegre

Postado 17 dezembro 2008 - 13:29

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! ;-)
Não respondo dúvidas por MSN, MP ou E-mails! Nestes meios de comunicação trato apenas de assuntos profissionais! Por favor, não insista!

#10 bareta

bareta

    Mods Scripts e ADD-ONS para seu site. Moderador ASP

  • Moderadores
  • 6.682 posts
  • Gender:Male
  • Location:Maracaju / MS

Postado 17 dezembro 2008 - 13:34

QUOTE(marvi @ 17/12/2008 - 14:17) Visualizar Post
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...


#11 marvi

marvi
  • Membros
  • 939 posts

Postado 17 dezembro 2008 - 13:50

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!



Responder



  


0 usuário(s) está(ão) lendo este tópico

0 membros, 0 visitantes, 0 membros anônimos