Ir para conteúdo

POWERED BY:

Arquivado

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

webfuture

Como marcar as opções escolhidas pelo usuário

Recommended Posts

Olá galera, estou com uma dúvida, no sistema de cadastros que estou montando o usuário tem vários campos checkbox com várias opções para serem marcadas, até ai tudo bem, digamos que tenha os campos:

 

tipofisico

se o usuario marcar 3 opcoes no banco vai ficar 1,4,4

genero musical

se o usuario marcar 4 opcoes no banco vai ficar 1,6,3,6

eusou

se o usuario marcar 5 opcoes no banco vai ficar 1,5,4,7

 

Variando os ids de acordo com a opção selecionada

 

E assim por diante, no momento do cadastro o formulário com os campos é montado na mão, no momento da alteração de dados os valores do formulário vem de um banco de dados, e a partir dai quebro o "1,4,4" que o usuario selecionou e bato com o valor do campo se for igual gostaria que o checkbox ficasse marcado, mas não estou conseguindo, tem alguma coisa boba que não estou vendo.. vejam o script:

 

<%altura_procura ="1,2" Set RSAltura = Server.CreateObject("AdoDB.Recordset")RSAltura.open "select nome_campo, valor from tb_altura order by nome_campo desc", Conexaowhile not RSAltura.EOFregistros = registros + 1nome_campo = RSAltura("nome_campo")valor = RSAltura("valor")%><tr><td><%For i = 1 To Int(UBound(Split(altura_procura, ",")) + 1)With Responsealtura_separada = (Split(altura_procura,",")(i-1))if altura_separada = valor then%><input type="checkbox" <%Response.Write "checked"%> value="<%Response.Write valor%>" name="altura_procura"><%else%><input type="checkbox" value="<%Response.Write valor%>" name="altura_procura"><%End IfEnd WithNext%></td><td class="formato2"><%Response.Write nome_campo%></td></tr><%RSAltura.movenextwendRSAltura.closeset RSAltura = nothing%>

No caso acima ele até seleciona as opções mas duplica os checkbox, ja tentei de tanto jeito mas ainda não encontrei o erro..

 

Se alguém puder me ajudar, se não ficou claro tento melhorar a explicação...rs

 

Xavier

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não entendi uma coisa, por exemplo: Você quer obter o tipo físico do usuário, então no formulário ele deverá selecionar algumas opções (exemplo):

 

Tipo físico:

[ ] Alto

[x] Baixo

[x] Magro

[ ] Moreno

 

Ao meu ver, o tipo Alto teria valor 1, Baixo teria valor 2, Magro 3, Moreno 4 e assim por diante...

nesse caso, os checkbox ficariam:

 

<input type="checkbox" value="1">Alto<input type="checkbox" value="2">Baixo<input type="checkbox" value="3">Magro<input type="checkbox" value="4">Moreno

Se for assim, eu não entendi como um usuário, selecionando 3 opções, poderia retornar valor como 1,4,4 (duas opções com valor 4)...

 

Poderia explicar melhor o que você gostaria de fazer?

Eu sei que você quer, durante a atualização do cadastro, deixar os checkbox que o usuário selecionou anteriormente, novamente marcados (checados) (para ele já saber quais marcou durante o cadastro, por exemplo)...

Só não entendi esses valores 1,4,4 ou 1,6,3,6 (dois valores 6)...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Grande webfuture, desculpe a demora.... as coisas não andam fáceis por aqui!

 

Mas está aí a lógica do seu código... cole em seu editor ASP e execute no seu browser...

Altere os números que estão armazenados na variavel valores (essa variavel irá armazenar os IDs recuperados de seu banco de dados) e veja o que acontece...

Em seguida veja o código e procure entendê-lo, para então adaptá-lo ao seu script...

 

<%@ Language=VBScript %><%Option Explicit%><%'.........'Conexão com o Banco de Dados, strings SQL, etc...Dim valores'Valores retornados pelo BDvalores = "1,2,4"'Criando um array para armazenar cada opçãodim tipofisico(6)tipofisico(1) = "Alto"tipofisico(2) = "Baixo"tipofisico(3) = "Gordo"tipofisico(4) = "Magro"tipofisico(5) = "Feio"tipofisico(6) = "Bonito"'Criando um ciclo para escrever as descrições dos camposDim iFor i=1 To uBound(tipofisico) Step 1'Se o número do ciclo atual estiver na variavel valores, retorna'o campo checado.  If InStr(valores,i)<>0 Then%><input type="checkbox" name="tipofisico[]" value="<%=i%>" checked> <%=tipofisico(i)%><br><%'Caso contrário retorna o campo não checadoElse%><input type="checkbox" name="tipofisico[]" value="<%=i%>"> <%=tipofisico(i)%><br><%End ifNext%>

Espero que dê certo!

Abraços e boa sorte!

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.