Ir para conteúdo

POWERED BY:

Arquivado

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

Geisimar Rech

[Resolvido] Checkox Dinâmicos

Recommended Posts

Meu problema se resume no seguinte:

 

Tenho 2 tabelas no banco, uma que são todos os meus cursos cadastrados e a outra são os pacotes montados com esses cursos.

 

Quero listar os cursos com checkbox e marcar somente os que tem o mesmo id da tabela "pacotes"

 

Marcar não é o problema, meu problama ta sendo que tenho que fazer 2 loops e não estou conseguindo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

a ideia é essa:

 

<%
set rs_pacotes = conn.execute("SELECT id_curso FROM pacotes")
	if (not rs_pacotes.eof) then
		while (not rs_pacotes.eof)
			
			set rs_cursos = conn.execute("SELECT * FROM cursos")
				if (not rs_cursos.eof) then
					while (not rs_cursos.eof)
						if (cstr(rs_cursos("id")) = cstr(rs_pacotes("id_curso"))) then
							response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" checked=""checked"" />")
						else
							response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" />")
						end if
					rs_cursos.moveNext : wend
				end if
			set rs_cursos = nothing
			
		rs_pacotes.moveNext : wend
	end if
set rs_pacotes = nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pela sua ajuda.

 

Seu código funcionou em partes

Só que houve um probleminha

 

ao dar o loop no pacote e marcar o curso e passar para o proximo , ta mostrando por exemplo 8 pacotes ou seja, duplicando 8 vezes os pacotes mas marca certo...

 

tentei mudar a posição dos while mas sem resultado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o código é o mesmo que você passou

<%
set rs_pacotes = conn.execute("SELECT id_curso FROM pacote_cursos WHERE id_pacote= "&id_pacote&" ")
	if (not rs_pacotes.eof) then
		while (not rs_pacotes.eof)
			
			set rs_cursos = conn.execute("SELECT * FROM cursos")
				if (not rs_cursos.eof) then
					while (not rs_cursos.eof)
						if (cstr(rs_cursos("id")) = cstr(rs_pacotes("id_curso"))) then
							response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" checked=""checked"" />")
						else
							response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" />")
						end if
					rs_cursos.moveNext : wend
				end if
			set rs_cursos = nothing
			
		rs_pacotes.moveNext : wend
	end if
set rs_pacotes = nothing
%>

 

a questão é ele mostra a tabela cursos todas as vezes que ele acha na tabela pacote_cursos o ID

ou seja

se tenho um pacote montado com 5 cursos, o código esta mostrando 5 vezes todos os cursos cadastrados

 

os checkbox são marcados certos nos 5 cursos correspondentes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

variavel=2
é o id do pacote

 

 

importante as tabelas que eu fiz estao assim nem sei se fiz ao contario senao, rsrssr

 

 

pacotes

 

id_pacote, pacote

 

 

cursos

 

id_curso, curso, id_pacote

 

 

Se alguem acha que eu fiz isto mal ou se acha que a logica nao esta correta diga, principlamente quanto a relacao entre essas duas tabelas pk tb nao sei se fiz bem ou se fiz ao contrario

 

 

 

 

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>

<style>
ul{list-style:none}

ul li{padding:5px}

ul li.sub{padding:5px 30px}
</style>
</head>

<body>
<ul>
<%

variavel=2

Set Conn =  Server.CreateObject("ADODB.Connection")
Conn.Open "DBQ=" & Server.MapPath("cursos.mdb") & ";Driver={Microsoft Access Driver (*.mdb)}","",""
sql="Select * from pacotes order by id_pacote "

Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sql, Conn

if rs.eof then
response.write("Nao existem registos")

else
while not rs.eof

rr=rs("id_pacote")
if rr=variavel then
%>
<li><%=rs("Pacote")%><input value="<%=rr%>" type="checkbox" checked="checked"/></li>
<%
				Set s=Server.CreateObject("ADODB.Recordset")
		  sql2="select * from cursos where id_pacote="&rr
		  s.open sql2, conn
				  if s.eof then%>
				  <li class="sub">Nao existem cursos nesse pacote</li>
				  <%
				  else
		  while not s.eof%>
		 <li class="sub"><%=s("curso")%><input value="<%=s("id_curso")%>" type="checkbox" checked="checked" /></li>
		  <%
		  s.movenext
		  wend
				  end if
else
%>
<li><%=rs("Pacote")%><input value="<%=rr%>" type='checkbox' /></li>
<%
		  
		  Set s=Server.CreateObject("ADODB.Recordset")
		  sql2="select * from cursos where id_pacote="&rr
		  s.open sql2, conn
				if s.eof then%>
				  <li class="sub">Nao existem cursos nesse pacote</li>
				  <%
				  else
		  while not s.eof%>
		 <li class="sub"><%=s("curso")%><input value="<%=s("id_curso")%>" type="checkbox"/></li>
		  
		 
		  <%s.movenext
		  wend
		  end if
end if
		  
rs.movenext
wend

s.close
set s=nothing
end if


rs.close
set rs=nothing
conn.close
set conn=nothing





%>
</ul>
</body>
</html>

 

 

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolvido:

 

 

<%
set rs_pacotes = conn.execute("SELECT * FROM pacote_cursos WHERE id_pacote= "&id_pacote&" ")
	if (not rs_pacotes.eof) then
		while (not rs_pacotes.eof)
		
			
			set rs_cursos = conn.execute("SELECT * FROM cursos")
				if (not rs_cursos.eof) then
				
					while (not rs_cursos.eof)
					
					if (not rs_pacotes.EOF) then
					
					
						if (cstr(rs_cursos("id")) = cstr(rs_pacotes("id_curso"))) then
							response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" checked=""checked"" />")
							
						   rs_pacotes.moveNext 
						   rs_cursos.moveNext						   				   		   
						 end if
						 
						end if
						
						 response.write(""&rs_cursos("nome_curso")&" - <input type=""checkbox"" />")
						 
					rs_cursos.moveNext : wend
				end if
			set rs_cursos = nothing
			
	  wend
	end if
set rs_pacotes = nothing
%>

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.