11closed 0 Denunciar post Postado Maio 17, 2010 ola deu certo William Bruno vlww so que o Input Nome 5: ñ cadastrou !! quando eu seleciono 5 no "qtsparts" o Input Nome 5: ñ cadastra quando eu seleciono 4 no "qtsparts" o Input Nome 4: ñ cadastra quando eu seleciono 3 no "qtsparts" o Input Nome 3: ñ cadastra quando eu seleciono 2 no "qtsparts" o Input Nome 2: ñ cadastra quando eu seleciono 1 no "qtsparts" o Input Nome 1: ñ cadastra ... como arrumar isso ? t+ ué estranho ... se eu selecionar 5 no select, essa linha quer dizer que a $item vai ser igual a 5 if($item == $qtsparts) break;// aq o loop para no 5 ñ entendo pq ñ esta gravando o ultimo. Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Maio 17, 2010 Pra que esse break ? retire isso. Não faz sentido. você já está trabalhando com um foreach, que é um 'laço bem inteligente', o if e o break não são necessários. Compartilhar este post Link para o post Compartilhar em outros sites
11closed 0 Denunciar post Postado Maio 17, 2010 aewww resolvido.. obrigadoo William Bruno e Victor Cometti ajudaram muito a minha pagina ia ficar com uns 1Mbs, agora ficou bem mais leve ... fico assim <?php $acao = $_GET["acao"]; if ($acao == "cadastro"){ $qtsparts = $_POST['qtsparts'];//recebe a quantidade $parts = $_POST['part'];//recebe no formato de array as parts $cadastra = true;//inicia com valor true foreach ($parts as $item => $valor){//varre o array if($item == $qtsparts)//se for o último break;//para o loop if ($valor == ""){//verifica itens vazios echo "Nome ".($item+1)." é obrigatório</br>"; $cadastra = false; } //testa se existem valores repetidos com excessão a ele msm e atribui a variável if(($repete = array_search($valor,$parts))!= $item && $valor != ""){ echo "Campos repetidos Nome ".($repete+1)." e Nome ".($item+1)."<br>"; $cadastra = false; } } if($cadastra){ foreach ($parts as $item => $valor){ $query = mysql_query("insert into `tabela".($item+1)."` (`parte".($item+1)."`) values ('{$valor}')") or die(mysql_error()); } echo "registrado"; } } ?> <form method="post" name="form1" action="index.php?acao=cadastro"> <ul> <li>Quantos *: <select name="qtsparts" id="qtsparts"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select></li> <li id="part1">Nome 1*:<input type="text" name="part[0]" > </input></li> <li id="part2">Nome 2*:<input type="text" name="part[1]" > </input></li> <li id="part3">Nome 3*:<input type="text" name="part[2]" > </input></li> <li id="part4">Nome 4*:<input type="text" name="part[3]" > </input></li> <li id="part5">Nome 5*:<input type="text" name="part[4]" > </input></li> </ul> <input type="submit" name="cadastrar" value="Enviar Cadastro"> </form> vlw msm hemm t+ Compartilhar este post Link para o post Compartilhar em outros sites
Victor Cometti 8 Denunciar post Postado Maio 18, 2010 11closed, disponha!! willian, O if e o break é pelo fato de poder existir n texts, como mensionado pelo 11closed, e essas texts já estão no html, simplesmente estão ocultas com display:none, e o array pelo php pega todos os texts independente de estar none ou block, e não é interessante passar pelas texts q estão ocultas. então colocando um limite no foreach até o tamanho de quantidade escolhida é uma solução para parada sem ter q passar por todas as posições. Uma outra solução seria pegar o array e retirar todas as posições desnecessarias antes de entrar no loop, ou então ele criasse texts dinamicamente em vez de deixarem ocultas. aberto a sugestões e melhoria!!!!!! vlw Compartilhar este post Link para o post Compartilhar em outros sites