jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 Estou com o seguinte problema. Tenho um checkbox com categoria e subcategoria Insiro isso através do for each. O grande problema que se insiro mais de uma opção o foreach não traz correto. ele apenas funciona se selecionar uma categoria e as subcategorias. se selecionar mais de uma categoria ele não busca todos valores e repete todas subcategorias. porque pelo que vi o foreach não sabe quem pertence a quem o codigo está assim $titulo = $_POST['titulo']; $subsub = $_POST['checkboxsubsub']; $sub = $_POST['checkboxsub']; $cat = $_POST['checkboxcat']; if ($_GET["a"] == "enviar_pergunta"){ $adicionar = mysql_query("INSERT INTO pergunta (descricao) VALUES ('{$titulo}')")or die(mysql_error()); $codigo = mysql_insert_id(); foreach($cat as $cat_id ) { echo "id da categoria". $cat_id."</br>"; foreach($sub as $sub_id ) { echo "id da subcategoria ". $sub_id."</br>"; $adicionar2 = mysql_query("INSERT INTO rcategorias (idpergunta, idcategoria, idsubcategoria) VALUES ('{$codigo}','{$cat_id}','{$sub_id}')")or die(mysql_error()); } } Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Janeiro 14, 2008 3 coisas....esse $cat e esse $sub sao arrays neah!? a otra coisa...onde termina a condicao do if???o codigo tah todo aih??? pq n to vendo a outra chave nao e a terceira eh... pq voce tah usando o insert assim??? $adicionar = mysql_query("INSERT INTO pergunta (descricao) VALUES ('{$titulo}')")or die(mysql_error()); Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 3 coisas....esse $cat e esse $sub sao arrays neah!? a otra coisa...onde termina a condicao do if???o codigo tah todo aih??? pq n to vendo a outra chave nao e a terceira eh... pq voce tah usando o insert assim??? $adicionar = mysql_query("INSERT INTO pergunta (descricao) VALUES ('{$titulo}')")or die(mysql_error()); $titulo = $_POST['titulo']; $subsub = $_POST['checkboxsubsub']; $sub = $_POST['checkboxsub']; $cat = $_POST['checkboxcat']; if ($_GET["a"] == "enviar_pergunta"){ foreach($cat as $cat_id ) { echo "id da categoria". $cat_id."</br>"; foreach($sub as $sub_id ) { echo "id da subcategoria ". $sub_id."</br>"; $adicionar2 = mysql_query("INSERT INTO rcategorias (idpergunta, idcategoria, idsubcategoria) VALUES ('{$codigo}','{$cat_id}','{$sub_id}')")or die(mysql_error()); } } aquele insert lá pode esquecer o que vale é isso. O problema seria o seguinte! Se eu seleciono 2 categorias ele repete os valores porque tem um foreach dentro de um foreach. Se eu selecionar assim Categoria: banco de dados Sub categoria: oracle funciona. Se eu seleciona 2 categorias assim Categoria: banco de dados Sub categoria: oracle funciona. Categoria: sistema operacional Sub-categoria: windows Se perde no valor ele repete 2 vezes a categoria quando seleciona 2 isso é o problema ai acaba repetindo 2 vezes a categoria porque selecionei 2 subcategorias, o problema é no foreach Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Janeiro 14, 2008 mostra ae como voce ta setando as variaveis $cat e $sub pra eu testa aki otra coisa...voce quer que seja mostrado tipo: Categoria1: Subcategoria 1 Subcategoria 2 Categoria2: Sub........... ........ ........ eh isso? :) :) Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 Assim Batatinha vamos supor que tem o seguinte. Estas variveis vem do banco de dados atraves das checkboxes. o grande problema é se colocar mais um foreach que se perde. se seleciono 2 categorias e 2 subcategoria ele entra no looping 2 vezes sacou? mais facil é te passar meu BD para entender melhor qual seu email? mostra ae como voce ta setando as variaveis $cat e $sub pra eu testa aki otra coisa...voce quer que seja mostrado tipo: Categoria1: Subcategoria 1 Subcategoria 2 Categoria2: Sub........... ........ ........ eh isso? :) :) Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Janeiro 14, 2008 mandei meu email por MP tipo...voce seleciona 2 opcoes na mesma checkbox??? se for isso sempre vai entra no loop 2x a nao ser c voce por um if dentro do loop... me add aih no msn pq eh + facil pra t ajuda flwss mandei meu email por MP tipo...voce seleciona 2 opcoes na mesma checkbox??? se for isso sempre vai entra no loop 2x a nao ser c voce por um if dentro do loop... me add aih no msn pq eh + facil pra t ajuda flwss Compartilhar este post Link para o post Compartilhar em outros sites
leonardonobre 0 Denunciar post Postado Janeiro 14, 2008 Boa tarde jean_c_g, Poste a estrutura do seu formulário para ficar mais claro. Se você quer somente pegar as informações de diversos Checkboxs, não precisa usar o foreach, pode somente contar quantos checkbox estão selecionado e ir pegando seus valores. Abraços, Léo Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 Boa tarde jean_c_g, Poste a estrutura do seu formulário para ficar mais claro. Se você quer somente pegar as informações de diversos Checkboxs, não precisa usar o foreach, pode somente contar quantos checkbox estão selecionado e ir pegando seus valores. Abraços, Léo Ta ai leo <?php require_once("config.php"); require_once("functions.php"); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>.:| Área de Manutenção |:.</title> <link href="style.css" rel="stylesheet" type="text/css"> <script language="javascript"> /* função para alterar o conteúdo do editor */ /* função chamada pelo select para realizar a consulta dos valores dos campos */ function pesquisar_subcategoria(valor) { /* valor será 0 (zero) se for para adicionar um novo item */ if(valor != 0) { /* apresenta os botões para alterar ou excluir o item selecionada */ /* zera os valores dos campos */ /* realiza a consulta dos valores para os campos */ http.open("GET", "consulta_dados.php?area=pergunta&id=" + valor, true); http.onreadystatechange = handleHttpResponse; http.send(null); } } function verifica(isSelected, valor){ alert(valor); if(isSelected){ pesquisar_subcategoria(valor); }else{ var obj = document.getElementById(valor); obj.innerHTML = ""; } } /* função chamada ao concluir a consulta dos dados para os campos */ function handleHttpResponse() { /* se não foi encontrado nenhum erro */ if (http.readyState == 4) { if (http.status == 200) { /* texto recebe a string retornada pela consulta anterior */ texto = http.responseText; //alert(texto); /* desfaz o urlencode enviado pelo php para preservar os dados pelo método GET */ texto = texto.replace(/\+/g," "); texto = unescape(texto); /* separa a string retornada e a adiciona em uma matriz */ string = texto.split("|"); /* define os valores dos campos de acordo com a consulta */ //document.forms[0].subcategoria.value = string[0]; //var conteudo = eval("conteudo").innerHTML; eval("conteudo").innerHTML = string; //eval("conteudo").innerHTML += string[0]; alert(eval("conteudo").innerHTML); //document.getElementById(conteudo).innerHTML = string; } } } /* ************************************** NÃO ALTERAR ************************************** */ function getHTTPObject() { var xmlhttp; /*@cc_on @if (@_jscript_version >= 5) try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlhttp = false; } } @else xmlhttp = false; @end @*/ if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { try { xmlhttp = new XMLHttpRequest(); } catch (e) { xmlhttp = false; } } return xmlhttp; } var http = getHTTPObject(); /* ************************************** NÃO ALTERAR ************************************** */ </script> <style type="text/css"> <!-- .style1 { color: #182452; font-weight: bold; } --> </style> </head> <body> <div class="container" id="container"> <table width="778" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF"> <tr> <td height="6" colspan="3"></td> </tr> <tr> <td width="4"> </td> <td valign="top"><table width="770" border="0" cellspacing="0" cellpadding="0"> <tr> <td><table width="770" height="71" border="0" cellpadding="0" cellspacing="0"> <tr> <td width="33" bgcolor="#CE2C10"> </td> <td width="6"> </td> <td width="128" bgcolor="#F7F7F7"><img src="../imagem/logo.gif" width="191" height="76"></td> <td width="436" bgcolor="#F7F7F7"> </td> <td width="128" bgcolor="#F7F3F7"> </td> <td width="6"> </td> <td width="33" bgcolor="#293CA5"> </td> </tr> </table></td> </tr> <tr> <td background="imagem/faixa_pontilhado.gif" height="14"></td> </tr> <tr> <td><table width="770" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="34" bgcolor="#CE2C10"> </td> <td width="4"> </td> <td width="320"><a href="index.php"><img src="imagem/area_manutencao_left.gif" border="0"></a></td> <td class="cliente"><strong>faq-PERGUNTAS</strong></td> <td width="25" bgcolor="#293CA5"> </td> <td width="5"> </td> <td width="170" bgcolor="#293CA5"> </td> </tr> </table></td> </tr> <tr> <td height="12"></td> </tr> <tr> <td><table width="770" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="10"> </td> <td width="130" valign="top"> </td> <td width="620" valign="top"> <?php if ($_GET["a"] == "adicionar" ) { ?> <form action="?a=enviar_pergunta" method="post" name="noticia"> <table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="590" height="14" background="imagem/faixa_pontilhado.gif"></td> </tr> <tr> <td class="opcoes"><p class="fonte">Adicionar pergunta: </p></td> </tr> <tr> <td><input name="titulo" type="text" class="campos" id="titulo" onFocus="this.className = 'campos_focus';" onBlur="this.className = 'campos';" value="" maxlength="100"></td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"> </td> </tr> <tr> <td height="14" class="fonte">Legendas: <span class="fonte" style="color:#000000">Categorias<span class="fonte" style="color:#293CA5"> - Sub-categorias - <span class="fonte" >Sub-sub-categorias </span></span></span></td> </tr> <tr> <td height="14" class="fonte"> <? $sql = "SELECT * FROM categoria"; $resultado = mysql_query($sql)or die; while($linha = mysql_fetch_array($resultado)) { ?> <table border="0" cellpadding="0" cellspacing="0" class="fonte"> <tr> <td colspan="2" style="padding-top:10px; padding-bottom:05px; color:#000000"><input type="checkbox" name="checkboxcat[]" value="<?PHP echo $linha['idcategoria']?>" /> <?PHP echo $linha["nome"]; ?></td> </tr> <tr> <?PHP $sql1 = "SELECT* FROM subcategoria WHERE idcategoria = $linha[idcategoria] "; $resultado1 = mysql_query($sql1)or die; while($linha1 = mysql_fetch_array($resultado1)){ ?> <td width="300" style="padding-left:20px; color:#293CA5"><input type="checkbox" name="checkboxsub[]" value="<?PHP echo $linha1['idsubcategoria']?>" /> <?PHP echo $linha1["nome"];?></td> <? $sql2 = mysql_query("SELECT * FROM subsubcategoria WHERE idsubcategoria = $linha1[idsubcategoria]"); while($linha2 = mysql_fetch_array($sql2)){ ?> <td width="100" class="fonte" ><input type="checkbox" name="checkboxsubsub[]" value="<?PHP echo $linha2['idsubsubcategoria']?>" /> <?PHP echo $linha2["nome"]; ?></td> <? }?> </tr> <?php } ?> </table> <?PHP }?> </td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"> <div id="conteudo" > </div> </td> </tr> <tr> <td><div align="center" id="botoes"> <input type="submit" class="campos_submit" value="Adicionar"> </div></td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"></td> </tr> <tr> <td></td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"></td> </tr> </table> </form> <?php } $titulo = $_POST['titulo']; $subsub = $_POST['checkboxsubsub']; $sub = $_POST['checkboxsub']; $cat = $_POST['checkboxcat']; if ($_GET["a"] == "enviar_pergunta"){ $codigo = mysql_insert_id(); foreach($cat as $cat_id) { foreach($sub as $sub_id) { $adicionar2 = mysql_query("INSERT INTO rcategorias (idpergunta, idcategoria, idsubcategoria) VALUES ('{$codigo}','{$cat_id}','{$sub_id}')")or die(mysql_error()); } /*else { echo " Seleciona ao menos um campo categoria e sub-categoria. Campo categoria e sub-categoria é obrigatório"; ; }*/ ?> <table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="14"> </td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"></td> </tr> </table> <?php } if ($_GET["a"] == "excluir" ){ ?> <table width="600" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="14"><p class="mensagem"><span><strong>Item excluído com sucesso.</strong></span></p></td> </tr> <tr> <td height="14" background="imagem/faixa_pontilhado.gif"></td> </tr> </table> <?php } ?> </td> <td width="10"> </td> </tr> </table></td> </tr> </table></td> <td width="4"> </td> </tr> <tr> <td> </td> <td height="39" valign="top"><table width="770" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="12"></td> </tr> <tr> <td height="5" bgcolor="#CE2C10"></td> </tr> <tr> <td height="4"></td> </tr> <tr> <td height="18" bgcolor="#293CA5"></td> </tr> </table></td> <td> </td> </tr> </table> </div> </body> </html> Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Janeiro 14, 2008 voce quer fazer oq eu falei???? categoria1: sub1 sub2 categoria2: sub1 sub2 eh isso??? Compartilhar este post Link para o post Compartilhar em outros sites
batatinha66 0 Denunciar post Postado Janeiro 14, 2008 foi mal de novo nao sei pq mais tah postando 2x quase toda hora... intaum pra aproveita o duplo post vo posta o codigo claro c for do jeito k eu falei <?php include('config.php'); $qry = mysql_query("select * from categoria"); while($linha = mysql_fetch_array($qry)){ echo $linha['nome']; echo "<br>"; $qrys = mysql_query("select * from subcategoria where idcategoria='$linha[idcategoria]'"); while($array = mysql_fetch_array($qrys)){ echo " - "; echo $array['nome']; echo "<br>"; }} ?> Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 foi mal de novo nao sei pq mais tah postando 2x quase toda hora... intaum pra aproveita o duplo post vo posta o codigo claro c for do jeito k eu falei <?php include('config.php'); $qry = mysql_query("select * from categoria"); while($linha = mysql_fetch_array($qry)){ echo $linha['nome']; echo "<br>"; $qrys = mysql_query("select * from subcategoria where idcategoria='$linha[idcategoria]'"); while($array = mysql_fetch_array($qrys)){ echo " - "; echo $array['nome']; echo "<br>"; }} ?> não [é isso batatinha. O grande problema é o uso dos 2 foreach. Talvez como o Leonardonobre falou de certo. Vou esperar ele para ver Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 <table border="0" cellpadding="0" cellspacing="0" class="fonte"> <tr> <td colspan="2" style="padding-top:10px; padding-bottom:05px; color:#000000"><input type="checkbox" name="checkboxsub[]" value="<?PHP echo $linha['idcategoria']?>" /> <?PHP echo $linha["nome"]; ?></td> </tr> <tr> <?PHP $sql1 = "SELECT* FROM subcategoria WHERE idcategoria = $linha[idcategoria] "; $resultado1 = mysql_query($sql1)or die; while($linha1 = mysql_fetch_array($resultado1)){ ?> <td width="300" style="padding-left:20px; color:#293CA5"><input type="checkbox" name="checkboxsub[]" value="<?PHP echo $linha1['idsubcategoria']?>" /> <?PHP echo $linha1["nome"];?></td> <? $sql2 = mysql_query("SELECT * FROM subsubcategoria WHERE idsubcategoria = $linha1[idsubcategoria]"); while($linha2 = mysql_fetch_array($sql2)){ ?> <td width="100" class="fonte" ><input type="checkbox" name="checkboxsubsub[]" value="<?PHP echo $linha2['idsubsubcategoria']?>" /> <?PHP echo $linha2["nome"]; ?></td> <? }?> </tr> <?php } ?> </table> Problema é que tenho 3 checkbox name="checkboxsubsub[]" name="checkboxsub[]" name="checkboxcat[]" então preciso recuperar estes 3 e inserir. ele se perde nisso com os 3 names não sabem quem é de quem selecionando varios. Só consigo com apenas name="checkboxcat[]" atraves do foreach mas se colocar mais for each um dentro do outro repete os codigos . um exemplo que está acontecendo Seleciona a categoria sistema operacional categoria 0= 25 Sub-categoria - 0= 38 Sub-categoria - 1= 43 Sub-categoria - 2= 44 Sub-categoria - 3= 45 se eu selecionar mais de uma categoria e os valores tipo seleciona sistema operacional e banco de dados. da isso Categoria Sistema Operacional 0= 25 categoria banco de dados 1= 26 sub categoria windows 0= 38 sub categoria linux 1= 43 sub categoria windows xp 2= 44 subcategoria oracle 3= 45 subcategoria sql 4= 39 subcategoria firebird 5= 40 retorna todas subcategoria de banco de dados e sistema operacional. Deveria separar isso entenderam? assim deveria ser o correto só trazer o que selecionei entenderam. Categoria Sistema Operacional 0= 25 sub categoria windows 0= 38 sub categoria linux 1= 43 sub categoria windows xp 2= 44 categoria banco de dados 1= 26 subcategoria oracle 3= 45 subcategoria sql 4= 39 subcategoria firebird 5= 40 foreach($cat as $cat_id ) { echo "id da categoria". $cat_id."</br>"; foreach($sub as $sub_id ) { echo "id da subcategoria ". $sub_id."</br>"; $adicionar2 = mysql_query("INSERT INTO rcategorias (idpergunta, idcategoria, idsubcategoria) VALUES ('{$codigo}','{$cat_id}','{$sub_id}')")or die(mysql_error()); } } Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 tava lendo em alguns lugares sobre que precisa recuperar em um array. porque tenho 3 names diferentes mas não tenho ideia como. Compartilhar este post Link para o post Compartilhar em outros sites
jean_c_g 0 Denunciar post Postado Janeiro 14, 2008 consegui um sucesso usei esta função unico problema ainda que não está trrazendo o que eu seleciono na subcategoria $codigo = mysql_insert_id(); foreach ( $cat as $category ) { while(list($k, $v) = each ($cat)) { echo "$k ... $v <br />"; $select = mysql_query("SELECT * FROM subcategoria WHERE idcategoria = $v"); while($row = mysql_fetch_assoc($select)) { echo $row['nome']; } } } Compartilhar este post Link para o post Compartilhar em outros sites