_Leandro_ 0 Denunciar post Postado Janeiro 25, 2008 <? session_start(); $id_pro = $id_prod; $id_pro = $_POST['checkbox']; for ($i=0; $i<count($id_pro); $i++) { //echo "Livro ID: ".$id_pro[$i]." | <br />"; Tanto o ID como o Valor chegam corretamente..... e se repetem.... $pro = $id_pro[$i]; $produto[] = $pro; //pega o ID do produto $num = $_POST['quant_'.$id_pro[$i]]; //aqui vai pegar a quantidade do formulário. $quant[] = $num; //pega a quantidade do produto //echo "Quantidade: ".$num." //Produto: ".$produto."<br />".$pro; } print_r ($quant); print_r ($produto); exit; $_SESSION['produto'] = $produto; $_SESSION['quant'] = $quant; header ("Location: orcamento_confirma.php"); exit; ?> Tenho este arquivo para gravar dados em uma array, são dois valores o ID e uma quantidade, o problema é que sempre que insiro dados o ID se repete e o produto fica duplicado, enquanto que a quantidade não, como posso resolver isso? Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2008 $id_prod é um array? Tem certeza de que não há IDs repetidos nele? Compartilhar este post Link para o post Compartilhar em outros sites
_Leandro_ 0 Denunciar post Postado Janeiro 25, 2008 Bah fera acho que não pois já andei trocando ele de nome pra ver e não adiantou nada. Mas valeu mesmo assim. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2008 Analisando melhor seu script, fiquei meio confuso. :P Nesta parte: $id_pro = $id_prod; $id_pro = $_POST['checkbox']; você quer usar o valor de $id_prod ou de $_POST['checkbox']? Compartilhar este post Link para o post Compartilhar em outros sites
_Leandro_ 0 Denunciar post Postado Janeiro 25, 2008 É que assim: o $id_prod pega o ID e o $_POST['checkbox'] é para pegar só as id's que estiverem com este checkbox marcado. o código é assim: <?PHP if (count($id_prod) > 0){ ?> Produtos já inclusos, definir a quantidade:<br /> <form action='sessao2.php' method='post' onsubmit="return checa_formulario(this)"> <?PHP if (count($id_prod) == 0){ echo "<div><br />Nenhum produto encontrado.</div>"; } else { echo "<table width='540'>"; for ($i=0; $i<count($id_prod);$i++){ //aqui já vai fazer a consulta até o último produto da sessão; $busca_c = mysql_query("select * from produtos WHERE id_produtos = ".$id_prod[$i]); //procura na tabela comparando com o ID que vem da seção; $nome = rawurldecode(mysql_result($busca_c,0,"produto")); if (($c+1) % 2 == 0) { $cor = 'bgcolor=\'#FAFAF0\''; } else { $cor = 'bgcolor=\'#FFFFFF\''; } echo "<script language='JAVASCRIPT'> function checa_formulario(form){ var invalid; invalid = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/; if (form.quant_$id_prod[$i].value == ''){ alert('Campo QUANTIDADE deve ser preenchido!'); form.quant_$id_prod[$i].focus(); return (false); } } </script> <tr print $cor><td align='center' width='80' height='50'><img src='admin/produtos/$id_prod[$i].jpg' border='0' height='50' /></td> <td> <input name='checkbox[]' checked='checked' type='checkbox' value='$id_prod[$i]'> $nome </td> <td width='140'> Quant: <input id='quant_' name='quant_$id_prod[$i]' type='text' value='$quantidade[$i]' size='3' maxlength='5'> Un.<br /></td> <td width='70' align='center'> <a href='?prodRemove=".$id_prod[$i]."'>Excluir</a> </td></tr>"; $c++; } echo "</table>"; } ?> <br /><br /><input id='submit' type='submit' value='Efetuar pedido de orçamento'> </form> ele já traz a sessão $id_prod só que antes de salvar de novo no arquivo que está dando erro eu uso um <? session_start(); session_destroy();// aqui eu destruo a primeira seção e crio uma nova com os dois dados - id_produto e quantidade - session_start(); $id_pro = $id_prod; $id_pro = $_POST['checkbox']; for ($i=0; $i<count($id_pro); $i++) { //$pro = $id_pro[$i]; $produto[] = $id_pro[$i]; //pega o ID do produto ..... conforme código postado anteriormente...... espero ter conseguido esclarecer melhor. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Janeiro 25, 2008 Eu citei aquela parte do código pois você está atribuindo valores diferentes à mesma variável. Além disso, não vi nenhum campo nomeado como checkbox nesse formulário. Compartilhar este post Link para o post Compartilhar em outros sites
_Leandro_ 0 Denunciar post Postado Janeiro 26, 2008 Opa fera, só pra constar, consegui solucionar usando o comando in_array pra zerar a duplicação e depois o array_splice para limpar as arrays vazias, mas valeu mesmo pela atenção, pena que agora estou com problema em outro array... Compartilhar este post Link para o post Compartilhar em outros sites
leonardonobre 0 Denunciar post Postado Janeiro 27, 2008 e ae Leandro e Beraldo, tudo bem? Leandro você usou o método de sigla POG. Programação Orientada a Ganbiarra. Tem que ver o real problema, com isso você apenas contornou a situação. Na minha opinião claro. O que tem de legal na programação é que tudo pode estar certo... porém tem maneiras mais indicadas de solucionar um problema. Abraços, Léo Compartilhar este post Link para o post Compartilhar em outros sites