Ir para conteúdo

POWERED BY:

Arquivado

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

11closed

[Resolvido] Diminuir codigo

Recommended Posts

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.