Ir para conteúdo
fazeredo2002

Lista de checkbox usando Split

Recommended Posts

Bom dia a todos...

 

Estou com um projeto que, aparentemente, era simples e acabou se tornando uma dor de cabeça, que confesso está tirando o meu sono. Mas tenho certeza que com a ajuda de vocês seja possível resolvê-lo.

 

Vamos ao que interessa:

 

Segue uma estrutura de banco de dados como exemplo:

  • Tabelas (tbl_Cliente, tbl_Marcas)
  1. tbl_Cliente: id (auto-numeração), Nome (texto), MarcasAtivas (texto longo).
  2. tbl_Marcas: id (auto-numeração), Marca (texto).

 

Na página de inserção dos Dados segue o seguinte:

tbl_Marcas

ID

MARCAS

1

Volks

2

Ford

3

Chevrolet

4

Volvo

5

Fiat

 

tbl_Clientes

ID

CLIENTE

MARCASATIVAS

1

Teste1

1,3,5

2

Teste2

2,4

 

 

 

Agora vem o problema!

 

Preciso exibir todos as Marcas da tbl_Marcas e checkeed as marcas selecionada na tbl_Cliente.

Exemplo para o cliente Teste1:

Id: 1

Cliente: Teste1

MarcasAtivas: 

×

Volks

 

Ford

×

Chevrolet

 

Volvo

×

Fiat

 

Segue o código que estou usando até o momento:

<%
if rsClientes("MarcasAtivas") <> "" then
Dim texto, arrayTexto, i
Dim rs, sql, conexao
texto = (rsClientes.Fields.Item("MarcasAtivas").Value)
arrayTexto = Split(texto,",")

	set conexao = server.CreateObject("adodb.connection")
	set rs = server.CreateObject("adodb.recordset")
	
	localbd = MM_cnSystemBackstage_STRING
	conexao.open localbd

For i = 0 to Ubound(arrayTexto)

sql = "select id, MarcaAtivas from tbl_Marcas where id = "&arrayTexto(i)&""

rs.open(sql), conexao
Fabrica = rs("Fabrica")

response.Write("<input type='checkbox' name='txt_MarcasInternas' id="&arrayTexto(i)&" checked disabled='disabled'><label for="&arrayTexto(i)&"> "&Fabrica&"<br></label>")

rs.close()

next
end if

conexao.close()
set conexao = nothing
%>

Da forma descrita acima, só exibe as marcas selecionadas e não todas as marcas juntas.

Me ajude aí... please!

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá a modelagem do banco não está adequada o ideal seria ter uma tabela intermediária entre clientes e marcas... fazendo um muitos-para-muitos... mas da para resolver ... mas você quer montar um combo com as marcas ativas e por cliente ? seria por AJAX?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Em 14/03/2018 at 18:15, Gustavo Emygdio Barboza disse:

Olá a modelagem do banco não está adequada o ideal seria ter uma tabela intermediária entre clientes e marcas... fazendo um muitos-para-muitos... mas da para resolver ... mas você quer montar um combo com as marcas ativas e por cliente ? seria por AJAX?

Boa noite amigos!

 

Resolvi desta forma:

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!--#include file="Connections/cnSystemBackstage.asp" -->
<%
Dim conexao, rsClientes, rsMarcas, localbd, sqlClientes, sqlMarcas
   
   Set conexao = Server.CreateObject ("ADODB.Connection")
   Set rsClientes = Server.CreateObject ("ADODB.RecordSet")
   Set rsMarcas = Server.CreateObject ("ADODB.RecordSet")
   localbd = MM_cnSystemBackstage_STRING
   
   Conexao.open localbd
   sqlClientes = "Select *from tbl_Clientes"
   sqlMarcas = "Select *from tbl_Marcas"
   
   rsClientes.open(sqlClientes), conexao
   rsMarcas.open(sqlMarcas), conexao
   
   
if rsClientes("MarcasAtivas") <> "" then

While NOT rsMarcas.EOF

Dim texto, arrayTexto, i, x, id_marca
texto = rsClientes("MarcasAtivas")
arrayTexto = Split(texto,",")

x=0
For i = 0 to Ubound(arrayTexto)
id_Marca = arrayTexto(i)
id_Marca = int(id_Marca)

if rsMarca("id") = id_Marca then
response.Write("<input type='checkbox' name='txt_Marcas' id='txt_Marcas' checked='checked' /><label for='txt_Marcas'> Marca = "&rsMarca("Fabrica")&"</p>")
x=x+1
end if
next
if x=0 then
response.Write("<input type='checkbox' name='txt_Marcas' id='txt_Marcas' /><label for='txt_Marcas'> Marca = "&rsMarca("Fabrica")&"</p>")
end if

rsMarca.MoveNext()
wend

rsClientes.close()
set rsClientes = nothing

rsMarcas.close()
set rsMarcas = nothing

conexao.close()
set conexao = nothing
%>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

foi mais simples que imaginei ... mas é isso ai... trabalhar com asp tem que ser criativo... rs... já o .NET tem recurso para tudo que acaba nos moldando fazendo agente seguir a mesma reta... o problema do ASP clássico é pegar projetos de outros para continuar... pois o estilo desenvolvimento pode mudar muito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por laumello12
      Galera ajudinha
      Como faço para consumir um web service pronto em um projeto. Preciso só que ele busque no web service e traga na web 
      HELP
    • Por rxmarti
      Saudações, sou novo no forum, mas não em pesquisas e este tem me ajudado muito em meus estudos, mas esbarrei em um problema e não estou encontrando uma solução que eu entenda seu funcionamento, o problema:
       
      O form que estou desenvolvendo em PHP possuí alguns campos checkbox e através de jvs eu consigo habilitá-los ou não por opção sim ou não (radio + onclick):
      <script>
      function enbl(form)
       {
          form.x_daye[0].disabled = false;
          form.x_daye[1].disabled = false;
          form.x_daye[2].disabled = false;
       }
       function disbl(form)
       {
          form.x_daye[0].disabled = true;
          form.x_daye[1].disabled = true;
          form.x_daye[2].disabled = true;
       }
                          
      </script>";  
      <input type=radio name=v_mandaemail value=NAO onClick=disbl(this.form)>NAO
      <input type=radio name=v_mandaemail value=SIM onClick=enbl(this.form)>SIM
           
      <input type=checkbox id=x_daye name=v_exc_day[] value=arq1>arq1
      <input type=checkbox id=x_daye name=v_exc_day[] value=arq2>arq2
      <input type=checkbox id=x_daye name=v_exc_day[] value=arq3>arq3
      ...
       
      Bom, isso está funcionando, mas se houver mais arquivos(arq*) e esta quantidade for listada em um  "while" , como posso fazer que a mesma função oriente qualquer checkbox listado.
       
      Muito grato
       
      RM
       
       
    • Por alecarnero
      Eu fiz uma pagina de login SiteMaster.asp trabalha com uma pagina verify.asp , coloque ela como documento padrao , problema que sim
      o usuario ja tem gravada alguma pagina de antes ele consegue accesar sem pasar pela login page
       
      http://localhost/teste/barra.asp
       
      quem souber o nome das paginas consegue acceso direito  
       
      que tenho que agregar para somente accese qualquer pagina quem passo pelo login?
       
       
      Obrigado por qualquer orientaçao  
       
      Alejandro
       
       
       
       
       
       
       
       
       
       
    • Por mmalainho
      Tenho um site em ASP nas línguas Português, Espanhol e Romeno.
      O serviço de hospedagem alterou o MYSQL ODBC para a versão 5.3 ANSI e agora não consigo fazer o update de texto em romeno (por exemplo Lecția 8 - Îmbunătățirea confortului mișcării corpului - Amortizarea )na base dados através de um formulário HTML.
       
      Tenho uma conexão para listar tudo sem problemas em todas as línguas mas fazer o insert/update não funciona em nenhuma das línguas com palavras acentuadas.
       
      conn.ConnectionString="DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER="&srv&"; DATABASE="&bd&"; UID="&uid&";PASSWORD="&pws&";PORT="&port&"; OPTION=3; charset=utf8; "

      Já experimentei retirar  charset=utf8; e assim consigo inserir/atualizar em português e espanhol, mas Romeno não.
      conniu.ConnectionString="DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER="&srv&"; DATABASE="&bd&"; UID="&uid&";PASSWORD="&pws&";PORT="&port&"; OPTION=3;"
         
       
      Versão do MySQL Versão do servidor: 5.1.73-community
      Charset: utf8_general_ci
      Tabela está também com utf8_general_ci
       
      Alguma sugestão ficaria muito grato
       
    • Por Rafael Freitas
      Fala galera!
      Estou travado em uma parte do projeto que estou fazendo, quem puder me ajudar, desde já agradeço.
      Seguinte,  eu tenho alguns dados gravados em uma tabela no banco. Eu recupero estes dados exibindo em uma tabela o nome do parametro "p_descricao" e um checkbox do lado, segue abaixo:
      <?php $max = 200; if(!$pagina){ $pagina = 1; } $inicio = $pagina -1; $inicio = $inicio * $max; $consulta = ("SELECT * FROM parametros WHERE p_tipo_analise='MICROBIOLOGICA'"); $p_id = $_GET["p_id"]; $query = mysql_query("$consulta LIMIT $inicio,$max"); $todos = mysql_query($consulta); $total = mysql_num_rows($todos); $tp = $total / $max; $regLinha = 4; $i = ceil($max / $regLinha); $j = 1; $z = 0; echo " <table width=100% class='tabela_parametros_itens' border=1><tr> "; while($x = mysql_fetch_array($query)){ echo "<td> <input type='checkbox' name='parametro' value='" .$x[p_descricao]."' checked> " .$x[p_id]." - " .$x[p_descricao]."</td>"; $z++; if($z == $regLinha and $j < $i){ echo "</tr><tr>"; $z = 0; $j++; } if($z == $regLinha and $j == $i){ echo "</tr>"; } } echo "</table>"; Eu coloquei checked para todos estarem marcados, até aí tudo certo. O que acontece é que quando eu cadastro, ele só grava no banco, o último registro, ou então se eu desmarco todos e deixo somente 1 marcado, aí ele grava certo.
       
      O que eu queria era gravar todos os registros que estiverem marcados com a checkbox e não só 1.
       
      Conto com a ajuda de vocês.
       
      Abraço.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.