Ir para conteúdo

POWERED BY:

Arquivado

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

wiltim

... CheckBox

Recommended Posts

Por favor ajudem-me com o seguinte problema:Minha base de dados (Mysql) é composta por 3 tabelas:1) contatos (Id_Contato, Nome): armazena os dados das pessoas cadastradas2) grupos (Id_Grupo, Descricao): armazena os grupos dispoíveis3)contatosxgrupos (Id_Contato, Id_Grupo): Relacionamento N:N que armazena em quais grupos cada contato está cadastrado.Preciso criar um formulário para edição/alteração que carrege dinamicamente em checkbox todos os grupos disponíveis da tabela grupos. Marque (checked) apenas nos grupos referentes ao Id_Contato que está armazenado na tabela contatosxgrupos. Assim poderei editar os grupos onde cada contato foi cadastrado.Ps.o Id_Contato veio da página anterior na variável $rowid_contatoDepois disso tudo, atualizar a tabela contatosxgrupos com os novos grupos do contato (essa parte ainda não implementei no código abaixo).Complicado né???O problema do código abaixo é que ele está marcando apenas o checkbox do primeiro grupo.<?//exibe na tela todos os grupos disponíveis e imprime "checked" quando o contato pertencer àquele grupo$sql_exibe=mysql_query("SELECT * FROM grupos ORDER BY Descricao") or die (mysql_error());while ($row = mysql_fetch_array($sql_exibe)) {print "<input type=\"checkbox\" name=\"chk_grupo[]\" value=\"$row[id_Grupo]\"";//A variável $rowid_contato está carregada com o código do contato que veio da página anterior$sql_contato=mysql_query("SELECT * FROM contatosxgrupos WHERE Id_Contato = $rowid_contato");$row_contato=mysql_fetch_array($sql_contato);if ($row[id_Grupo] == $row_contato[id_Grupo])echo 'checked';echo ">";echo $row["Descricao"];print "<br>";}?>Alguém pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.....seu eu entendi seu problema eu resoveria com arrays.Vou colcar um exemplo abaixo e ve se ajuda.....não vou colocar os delimitadores de codigo php não..ok?!$query="select * from grupos";$result=mysql_result($query);while ($row=mysql_fetch_array($result)){ $id_grupo=$row['id_grupo']; $query="select * from contatosxgrupos where id_contato=$idcontato";//a variavel idcontato vem de oputra tela, certo?! $result1=mysql_result($query); while ($row1=mysql_fetch_array($result1)) { }}<input type="checkbox" name="chkgrupo[<? echo $id_grupo; ?>]" value="<? echo $id_grupo; ?>">

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi.....seu eu entendi seu problema eu resoveria com arrays.Vou colcar um exemplo abaixo e ve se ajuda.....não vou colocar os delimitadores de codigo php não..ok?!$query="select * from grupos";$result=mysql_result($query);while ($row=mysql_fetch_array($result)){ $id_grupo=$row['id_grupo']; $query="select * from contatosxgrupos where id_contato=$idcontato";//a variavel idcontato vem de oputra tela, certo?! $result1=mysql_result($query); while ($row1=mysql_fetch_array($result1)) { $id_contatogrupo=$row1['id_grupo']; if($id_grupo==$id_contatogrupo) { <input type="checkbox" name="chkgrupo[<? echo $id_grupo; ?>]" value="<? echo $id_grupo; ?>" checked> } else { <input type="checkbox" name="chkgrupo[<? echo $id_grupo; ?>]" value="<? echo $id_grupo; ?>"> } }}Olha....não sei se isso funciona....mas a i´deia é essa.....acho que você vai ter que dar uma mudada nos while.....mas a idéia é vctrtabalhar com array...isso porque você depois vai ter gravar né.....ai assim fica mais fácil...Espero ter ajudado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu pela dica.Fiz algumas adaptações no código que você sugeriu e ele ficou assim:<?$query_grupos=mysql_query("SELECT * FROM grupos");while ($row = mysql_fetch_array($query_grupos)){ $id_grupo=$row['Id_Grupo']; $grupo=$row['Descricao']; $query_cxg=mysql_query("SELECT * FROM contatosxgrupos WHERE Id_Contato=$rowid_contato");//a variavel idcontato vem de oputra tela, certo?! while ($row1=mysql_fetch_array($query_cxg)){ $id_contatogrupo=$row1['Id_Grupo']; if($id_grupo==$id_contatogrupo){ print "<input type=\"checkbox\" name=\"chkgrupo[<? echo $id_grupo; ?>]\" value=\"<? echo $id_grupo; ?>\" checked>"; echo "$grupo $id_grupo $id_contatogrupo"; print "<br>"; } else if ($id_grupo <> $id_contatogrupo) { print "<input type=\"checkbox\" name=\"chkgrupo[<? echo $id_grupo; ?>]\" value=\"<? echo $id_grupo; ?>\">"; echo "$grupo $id_grupo $id_contatogrupo"; print "<br>"; } }}?>O Código funcionou em partes.O problema é que quando o checkbox não é marcado, ele aparece na tela o mesmo número de vezes que ele é testado pelo else if.Alguma sugestão?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi....Eu imaginei que fosse ocorrer algo assim mesmo....é que eu estou em pouco atolada de trrampo e naum deu pra testar pra você.......Mas tenta inverter os while. Saca? Tipo faz primeiro o while da contatosxgrupo de dentro deste o while de grupo. Assim você testa se o id do contatoxgrupo for igual ao do grupo mostar checkado, se não for igual mostra sem ta checado.Assim eu acho que funciona.Se não funcionar manda outro email que eu te ajudo a testar.....mas a noite...ok?!Valeu :D

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.