Vitor Talaia Posted October 22, 2011 Report Share Posted October 22, 2011 Olá!Estou tendo problemas na hora de mostrar os valores das checkbox que foram selecionadas, quando mais de uma opção é selecionada, só é mostrada a última delas.Aqui estão os códigos:Formulário:<body> <form name="form1" method="post" action="save_Disciplina.php"> <label>Nome<br> <input type="text" name="txtNome" id="txtNome"> </label> <p> <label>Abreviação <br> <input type="text" name="txtAbreviacao" id="txtAbreviacao"> </label> </p> <p> <label>Área <label><br /> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="info">Informática </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="adm">Administração </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="mec">Mecânica </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="design">Design </label><br /> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="geral">Geral </label> </label> </p> <p> <label>Descrição<br> <textarea name="txtDescricao" id="txtDescricao"></textarea> </label> </p> <p> <input type="submit" value="Enviar" onClick="return Validar()"/> <input type="reset" value="Limpar Dados" /> </p> </form> <? if(isset($_SESSION["disciplina"])) include("list_Disciplina.php"); ?> </body> save_Disciplina: <?php session_start(); $nome = $_REQUEST["txtNome"]; $abreviacao = $_REQUEST["txtAbreviacao"]; if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area = $valor; } } $descricao = $_REQUEST["txtDescricao"]; $disciplina = array ("nome" => $nome, "abreviacao" => $abreviacao, "area" => $area, "descricao" => $descricao); if(isset($_SESSION["disciplina"])) array_push($_SESSION["disciplina"], $disciplina); else $_SESSION["disciplina"] = array($disciplina); header("Location:form_Disciplina.php"); ?> list_Disciplina: <table> <th>Nome</th> <th>Abreviação</th> <th>Área</th> <th>Descrição</th> <? foreach($_SESSION["disciplina"] as $disciplina){ extract($disciplina, EXTR_OVERWRITE); ?> <tr> <td align="center"><?=$nome;?></td> <td align="center"><?=$abreviacao;?></td> <td align="center"><?=$area;?></td> <td align="center"><?=$descricao;?></td> </tr> <? } ?> </table>Estou quebrando a cabeça rsrsrsrsAgradeço desde jáAh... e eu upei os arquivos, pra fazer um teste, estão em: http://interguerreiro.orgfree.com/Discipli..._Disciplina.php Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted October 22, 2011 Report Share Posted October 22, 2011 Olá Vitor,eu não testei, por isso não sei se daria certo, mas já tentou colocar essa linha:$disciplina = array ("nome" => $nome, "abreviacao" => $abreviacao, "area" => $area, "descricao" => $descricao);dentro do foreach(), ficando assim...if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area = $valor;$disciplina = array ("nome" => $nome, "abreviacao" => $abreviacao, "area" => $area, "descricao" => $descricao); } } Quote Link to comment Share on other sites More sharing options...
0 Vitor Talaia Posted October 23, 2011 Author Report Share Posted October 23, 2011 Olá Vitor,eu não testei, por isso não sei se daria certo, mas já tentou colocar essa linha:$disciplina = array ("nome" => $nome, "abreviacao" => $abreviacao, "area" => $area, "descricao" => $descricao);dentro do foreach(), ficando assim...if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area = $valor;$disciplina = array ("nome" => $nome, "abreviacao" => $abreviacao, "area" => $area, "descricao" => $descricao); } }Acabei de testar aqui e ele deu a mesma coisa, nossa to viajando nisso já heheheheObrigado pela força! Quote Link to comment Share on other sites More sharing options...
0 mJi Posted October 23, 2011 Report Share Posted October 23, 2011 Tente trocar isto:if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area = $valor; } } por isto: if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area[] = $valor; } }A variável $area estava recebendo cada valor de uma vez, ou seja, o último sobreescreve o penultimo que sobreescreve o antepenúltimo....Colocando o '[]', a variável $area torna-se um vetor que recebera em cada indice um valor. Os indices serão automaticamente numerados. Na dúvida, dá um print_r($area). Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted October 23, 2011 Report Share Posted October 23, 2011 Vitor,eu fiz dessa forma. Fiz uma modificação.. veja:Formulário<!DOCTYPE HTML><html><head><meta charset="iso-8859-1"><title>Untitled Document</title></head><body> <form name="form1" method="post"> <label>Nome<br> <input type="text" name="txtNome" id="txtNome"> </label> <p> <label>Abreviação <br> <input type="text" name="txtAbreviacao" id="txtAbreviacao"> </label> </p> <p> <label>Área <label><br /> <input type="checkbox" name="chkArea[]" id=chkArea[]" value="info">Informática </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="adm">Administração </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="mec">Mecânica </label><br> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="design">Design </label><br /> <label> <input type="checkbox" name="chkArea[]" id="chkArea[]" value="geral">Geral </label> </label> </p> <p> <label>Descrição<br> <textarea name="txtDescricao" id="txtDescricao"></textarea> </label> </p> <p> <input type="submit" name="submit" value="Enviar" onClick="return Validar()"/> <input type="reset" value="Limpar Dados" /> </p> </form> <?php if($_REQUEST["submit] == "Enviar") include("save_Disciplina.php"); if(isset($_REQUEST["fechar"])): unset($_SESSION["disciplina"]); endif; ?> <a href=?fechar"> Fechar sessão</a>save_Disciplina<?php session_start(); $nome = $_REQUEST["txtNome]; $abreviacao = $_REQUEST["txtAbreviacao"]; $descricao = $_REQUEST["txtDescricao"]; ?> <table> <th>Nome</th> <th>Abreviação</th> <th>Área</th> <th>Descrição</th><?php if(isset($_REQUEST["chkArea"])) { foreach($_REQUEST["chkArea"] as $valor) { $area = $valor;?> <tr> <td align="center"><?=$nome;?></td> <td align="center"><?=$abreviacao;?></td> <td align="center"><?=$area;?></td> <td align="center"><?=$descricao;?></td> </tr><?php } } ?>Esse é meu raciocínio que fugiu um pouco do seu.... foi a forma mais simples que encontrei...abraços Quote Link to comment Share on other sites More sharing options...
0 Vitor Talaia Posted October 23, 2011 Author Report Share Posted October 23, 2011 Hum... vou salvar o teu código aqui pra eu dar uma olhada amanhã quando acordar, sempre é bom dar uma olhada em maneiras diferentes de programar né heheheEu segui a dica do @mJi colocando tudo em um array, e usando implode pra mostrar os valores separados:$areas = implode("; ", $area);E agora tá funcionando \o/http://interguerreiro.orgfree.com/Discipli..._Disciplina.phpObrigado pela ajuda!!! Quote Link to comment Share on other sites More sharing options...
0 mJi Posted October 23, 2011 Report Share Posted October 23, 2011 Hum... vou salvar o teu código aqui pra eu dar uma olhada amanhã quando acordar, sempre é bom dar uma olhada em maneiras diferentes de programar né heheheEu segui a dica do @mJi colocando tudo em um array, e usando implode pra mostrar os valores separados:$areas = implode("; ", $area);E agora tá funcionando \o/http://interguerreiro.orgfree.com/Discipli..._Disciplina.phpObrigado pela ajuda!!!=DQualquer coisa, tamo ae Quote Link to comment Share on other sites More sharing options...
0 MTavares Posted October 23, 2011 Report Share Posted October 23, 2011 Show Vitor,o meu código deu problema que não vi na hora, ele não traz os resultados abaixo dos outros... mas a solução que tem é boa...dei uma olhada aqui... abraços Quote Link to comment Share on other sites More sharing options...
Question
Vitor Talaia
Olá!
Estou tendo problemas na hora de mostrar os valores das checkbox que foram selecionadas, quando mais de uma opção é selecionada, só é mostrada a última delas.
Aqui estão os códigos:
Formulário:
save_Disciplina: list_Disciplina:Estou quebrando a cabeça rsrsrsrs
Agradeço desde já
Ah... e eu upei os arquivos, pra fazer um teste, estão em: http://interguerreiro.orgfree.com/Discipli..._Disciplina.php
Link to comment
Share on other sites
7 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.