Jump to content


Photo

Array E Formulario Com Loop


  • Faça o login para participar
1 reply to this topic

#1 JOTA MILER

JOTA MILER

    Novato no fórum

  • Usuários
  • 9 posts
  • Sexo:Masculino
  • Localidade:Avaré - SP

Posted 11/08/2010, 23:22

Ola gente to com um problemão tenho aki um script que eu fiz em array, e não sei como fuinciona muito bem, fui fazendo a base de erros e acertos, mais ainda não entendo a logica, bem mais primeiro...

sou novo neste forum, migrei pra k pq participava de outro forum, mas no que eu participava niguem respondia nada com nada direito, pois bem espero que possam me ajudar.


tenho um formulario que busca alguns dados do db e adicionei um checkbox com o nome de refere[]
que seria a referencia do produto,
outro com o valor e nome e etc segue o formulario abaixo:

<form name="form1" method="post" action="index1.php?pg=pedido&acao=incluir">
<?
for($i=0; $i<=$tr; $i++)
{

$linha = mysql_fetch_array($consulta)
?>

<table width="95%" align="center" cellpadding="0" cellspacing="0" bgcolor="#<?echo (($i%2)?"FFFFFF":"7FB2E5");?>" class=cenb>
  <tr bgcolor="#<? echo (($i%2)?"FFFFFF":"7FB2E5"); ?>"> 
	<td width="151" align="center" valign="middle" class=topa><br>
	  <a href="../fotos/produtos/<? echo $linha['imagem'];?>" rel="gb_imageset[nice_pics]"><img src="../fotos/produtos/<? echo $linha['imagem'];?>" width="120" border="0" title="<?php echo $linha['titulo_pct']; ?> - Clique para AMPLIAR"></a><br>
	</td>
	<td width="589" colspan="2" align="center" class=topa><table width="100%" align="left" cellpadding="0" cellspacing="0">
		  <tr bgcolor="#<? echo (($i%2)?"FFFFFF":"7FB2E5"); ?>" class="cenb"> 
			<td width="192" height="26" align="center" class=topa> <div align="right"> <font color="#CC0000" size="2" face="Arial, Helvetica, sans-serif">Código 
				::</font></div></td>
			<td width="289" align="left" valign="baseline" class=topa><div align="left"></div>
			   <strong><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"><?php echo $linha['ref']; ?></font></strong> 
			</td>
			<td colspan="2" align="right" valign="baseline" class=topa> <div align="center">
				<input type="checkbox" name="refere[]" value="<?php echo $linha['ref'] ?>">
			  </div></td>
		  </tr>
		  <tr bgcolor="#<?echo (($i%2)?"FFFFFF":"7FB2E5");?>" class="cenb"> 
			<td align="right" valign="top" class=topa><font color="#CC0000" size="2" face="Arial, Helvetica, sans-serif">Nome 
			  do Produto::</font></td>
			<td align="left" valign="top" class=topa_tit><strong><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"> 
			   <?php echo $linha['titulo_pct']; ?></font></strong></td>
			<td width="50" align="left" valign="baseline" class=topa_tit><div align="right"><font color="#FF6600" size="3">Qtd::</font></div></td>
			<td width="60" align="left" valign="top" class=topa_tit><input name="quant[]" type="text" size="5" value="1" class=""></td>
		  </tr>
		  <tr bgcolor="#<?echo (($i%2)?"FFFFFF":"7FB2E5");?>" class="cenb"> 
			<td align="right" valign="top" class=topa><font color="#CC0000" size="2" face="Arial, Helvetica, sans-serif">Descrição 
			  do produto::</font></td>
			<td colspan="3" rowspan="2" align="left" valign="top" class=topa_tit><strong><font color="#000000" size="1" face="Arial, Helvetica, sans-serif"> 
			   <?php echo $linha['descricao']; ?></font></strong></td>
		  </tr>
		  <tr bgcolor="#<?echo (($i%2)?"FFFFFF":"7FB2E5");?>" class="cenb"> 
			<td align="right" valign="top" class=topa><input type="hidden" name="nome[]" value="<?php echo $linha['titulo_pct'] ?>"> 
			  <input type="hidden" name="valor[]" value="<?php echo $linha['valor_pct']?>"></td>
		  </tr>
		  <tr bgcolor="#<?echo (($i%2)?"FFFFFF":"7FB2E5");?>" class="cenb">
			<td align="right" valign="top" class=topa><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif">Valor::</font></td>
			<td colspan="3" align="left" valign="top" class=topa_tit><font color="#FF0000" size="2" face="Arial, Helvetica, sans-serif"><strong>R$: 
			  </strong></font><strong><font color="#000000" size="2" face="Arial, Helvetica, sans-serif"><?php echo $linha['valor_pct']; ?></font></strong></td>
		  </tr>
		</table></td>
  </tr>
  <tr> 
	  <td class=topa colspan="3" align="center"> </td>
  </tr>
  <tr> 
	<td colspan="3" align="center" class=topa>
 </td>
  </tr>
</table>
	  
<?
}}
?>
  <table width="100" border="0" align="center" cellpadding="0" cellspacing="0">
	<tr>
	  <td><div align="center">
		  <input type="submit" name="Submit" value="Adicionar">
		</div></td>
	</tr>
  </table>
  <p> </p></form>

bem ... esses dados do formulario são recebidos com este script abaixo que faz o seguinte: pega os produtos que você ticou no checkbox juntamente coma quantidade que você quer e adiciona em um banco de dados, com os seguintes parametros, se o produto já estiver no banco de dados com a id do usuario ele adiciona a nova quantidade. se não estiver ainda no db ele adiciona mais um item.

segue o codigo abaixo:

<?
require_once "conexao.php";
if($acao=='incluir')
{

		if($refere=="")
		{
		echo "&lt;script>window.alert(\"Nenhum produto foi selecionado!\");</script>";
		echo "&lt;script>window.location='java script:history.back(1)'</script>";
		}
		else
		{

	for ($indice=0;$indice<count($refere);$indice++)
	{
		$refe=$refere[$indice];
		echo "$refe -- ".$quant[$indice]." <br>";
		if($refere=="")
		{
		echo "&lt;script>window.alert(\"Nenhum produto foi selecionado!\");</script>";
		echo "&lt;script>window.location='java script:history.back(1)'</script>";
		}
		
		$a=ereg_replace(",",".",$valor[$indice]);
		$b=$quant[$indice];
  
		$soma=$a*$b;
		$Vtot=$soma;
		$Vunit=$valor[$indice];
		$produto=$nome[$indice];
		$qtd=$quant[$indice];

		$teste = "Select count(*) as soma from carrinho WHERE id_repres='$idrepre' and ref='$refe'" or trigger_error('Erro linha 224 = ' . mysql_error());
		$teste2 = mysql_query($teste);
		$comp = mysql_result($teste2,0,"soma"); //verifica o produto já existe na tabela carrinho

			if($comp==0) //se não existir, insere um novo produto
				{
		 			 $sql="INSERT INTO carrinho VALUES ('','$idrepre','$refe','$qtd','$produto','$Vunit','$Vtot')" or trigger_error('Erro linha 229 = ' . mysql_error());
		 			 $ss=mysql_query($sql);
				}
			else
				{
					  $consulta_ref="SELECT * FROM carrinho WHERE id_repres='$idrepre' and ref='$refe'" or die (mysql_error());
					$result_ref=mysql_query($consulta_ref) or die (mysql_error());
					$reg_ref=mysql_fetch_array($result_ref) or die (mysql_error());
					$qtd_ref=$reg_ref['qtd'];
					$val_ref=$reg_ref['Vtot'];
					$quantia=($qtd_ref+$qtd);
					$valor_total=($val_ref+$soma);
					$vtotal=$valor_total;
					$tabela="UPDATE carrinho SET qtd='$quantia' , Vtot='$vtotal' WHERE id_repres='$idrepre' and ref='$refe'" or die (mysql_error());
					$qry_tabela=mysql_query($tabela) or die (mysql_error());

				}

	}
			if($ss!==0)
				{
					 echo "&lt;script>window.alert(\"Produtos adicionados com sucesso\");</script>";
				}

				  
}}
?>


bem o meu problema é o seguinte se eu ticar o primeiro produto da lista ... beleza
se eu ticar o 1º,2º,3º beleza, mais se eu pular a ordem e não ticar o 1º e ticar o 2º ou mesmo quaquer outro ele pega a quantidade do primeiro da lista (que seria value=1) mesmo sem eu ter ticado.
se eu selecionar mais de um item por ex:

seleciono o 2º e o 4º
no 2º ele pega os valores do primeiro sem que eu tenha ticado
e o 4º ele vai normal.

se alguém não esta intendendo nada do que eu expliquei, entre em http://provisorio.av...testes/fiorella
entre com
login: repres
senha:senha

e va em produtos e depois tente criar um pedido deletando produto inserindo de novo, etc. primeiramente tente colocar os 3 primeiros produtos que já estão com preço, ai tente deletar e colocar novamente, etc.


ATENÇÃO: testem somente com o 3 primeiros produtos porque são os unicos que estão com preço, se colocarem os outros não vai adiantar nada, por causa que estão sem os valores de preço.


vai la galera me ajudem por favor

Edição feita por: JOTA MILER, 11/08/2010, 23:24.


#2 Alan Martini

Alan Martini

    Normal

  • Usuários
  • 75 posts
  • Sexo:Masculino
  • Localidade:Campo Bom, RS
  • Interesses:De tudo um pouco

Posted 12/08/2010, 09:27

Bom dia Jonatas,

Tenho um código parecido em uma aplicação, só que de uma maneira diferente quanto ao nome do checkbox, veja só:

//criar checkbox
$a = 0; // é bom iniciar o contador;
value="<?php echo $linha['ref'] ?>" name="refere<?php echo $a++;?>" 

<?php
//recebimento dos dados
$dados            = $_POST;
$qtdTotalProdutos = //É necessário verificar a quantidade total de produtos no banco, para o looping
$refere           = "refere"; // "Name" da checkbox

$c = 0;
while ($c < $qtdTotalProdutos ) :
   //verifica se há valor na checkbox
   if ($dados[$refere.$c] != ""){
      //recebe o id da check box selecionada
      $insert[] = $dados[$refere.$c];
      $c++;
   }else{
      $c++
   }
endwhile;
?>

Agora no array $insert tem o ID(referencia) de todos os produtos selecionados para fazer o pedido.

Espero ter ajudado.
[]'s
Este post lhe ajudou/foi útil? Retribua(+)
"O impossível é apenas questão de opinião" J.W.
--------------------------
Att.
Alan Martini




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq