Jump to content
JFernandesVR

[Resolvido] Carrinho de Compras Problema!

Recommended Posts

JFernandesVR

Boas pessoal.

è o seguinte.

Fiz um carrinho de compras e está quase tudo a funcionar em pleno.

A única coisa que não tá a funcar é a atualizar a quantidade de um determinado produto.

Por exemplo: já tenho um artigo no carrinho com a quantidade de 3.

se eu quiser mudar para 4 à primeira vez que tento mudar ele nao faz nada, mas à segunda vez ja muda. nao percebo pq nao muda logo na primeira.

e se eu à segunda vez puser 5, ele vai por o valor que pus na primeira vez.

<?php
$SID = SID;
  $global = 0;

if (isset($_SESSION['i']))
{
if (isset($_SESSION['carrinho']))
{
  if ($_SESSION["carrinho"] != 0)
  {
  $sessao = $_SESSION['carrinho'];
  $sql = "SELECT * FROM lcarrinho WHERE Carrinho = '" . $sessao . "'";
		$rs=$this->bd->executarSQL($sql);
  $n=0;
  $id=1;

  if (isset($_POST['ref2']))
  {
$sql2="UPDATE lcarrinho SET Quant='".$_POST['quantidade2']."' WHERE Carrinho = '" . $sessao . "' ";
$resultado2=mysql_db_query("*****",$sql2);
  }
  ?>
		<table width="560" height="25" border="0">
		 <tr>
		  <td width="12%" align="center">
		   <div class="style29"><span class="style20" align="center">Ref.</div>
		  </td>
		  <td width="35%" align="center">
		   <div class="style29"><span class="style20" align="center">Artigo</div>
		  </td>
		  <td width="9%" align="center">
		   <div class="style29"><span class="style20" align="center">Quant.</span></div>
		  </td>
		  <td width="15%" align="center">
		   <div  class="style29"><span class="style20" align="center">P. Unit.</span></div>
		  </td>
		  <td width="15%" align="center">
		   <div  class="style29"><span class="style20" align="center">Total</span></div>
		  </td>
		 </tr>
		<?php
  $n = 0;
  $global = 0;
  $globaliva = 0;
  $totalglobal = 0;

  while(mysql_fetch_row($rs))
  {
$totalglobal = 0;

$num = $n +1;
$id = mysql_result($rs, $n, "CArtigo");
$sql4 = "SELECT Iva FROM artigos WHERE Referencia ='" . mysql_result($rs, $n, "CArtigo") . "'";
$rs4=$this->bd->executarSQL($sql4);
$ivatxt = mysql_result($rs4, 0, "Iva");
$ivanum = (int)$ivatxt;

$sql5 = "SELECT Valor FROM ivas WHERE Numero = " . $ivanum;
$rs5=$this->bd->executarSQL($sql5);
$iva = mysql_result($rs5, 0, "Valor");
$id = mysql_result($rs, $n, "CArtigo");
?>
			<tr>
			 <td height="30" width="12%" valign="middle">
			  <div align="left" class="style29"><span class="style2\"><a href="Artigo.php?<?php echo $SID ?>&id=<?php echo $id ?>"><?php echo mysql_result($rs, $n, "CArtigo") ?></a></span></div>
 </td>
 <td height="30" width="35%" valign="middle">
			  <div align="left" class="style29"><span class="style20"><a href="Artigo.php?<?php echo $SID ?>&id=<?php echo $id ?>"><?php echo mysql_result($rs, $n, "NArtigo") ?></a></span></div>
 </td>
<?php
			$qtd = mysql_result($rs, $n, "Quant");
?>
 <td height="30" width="9%" valign="middle">
				<div align="center" class="style29"><span class="style20">
  <form action="" method="post" name="atualizar">
		 <input name="ref2" type="hidden" />
		 <input name="quantidade2" type="text" value="<?php echo mysql_result($rs, $n, "Quant") ?>"  size="2" maxlength="2" />
		 <input name="atualiza" type="image" src="images/atualizar.png" width="25" height="25" />
		</form>
 </span></div>
 </td>
<?php
$preco = mysql_result($rs, $n, "Preco");
?>
 <td height="30" width="15%" valign="middle">
				 <div align="center" class="style29"><span class="style20"> € <?php echo mysql_result($rs, $n, "Preco") ?></span></div>
 </td>
			<?php
$v = ",";
$p = ".";
$precos = str_replace($v, $p, $preco);
$total = $qtd * $precos;
if ($total == round($total,0))
$total = $total . ".00";
if(strlen(strchr($total,".")) == 2)
$total = $total . "0";
?>
 <td height="30" width="15%" valign="middle">
				 <div align="center" class="style29"><span class="style20"> € <?php echo $total ?></span></div>
 </td>
 <td height="30" width="14%">
				 <div align="center" valign="top" class="style29"><span class="style20">
   <form id="form1" name="form1" method="post" action="remcarrinho.php?<?php echo $SID ?>">
	<input type="submit" name="remover" id="remover" value="Remover" />
	<input name="CArtigo" type="hidden" id="CArtigo" value="<?php echo mysql_result($rs, $n, "NArtigo") ?>" />
						</form>
				   </span></div>
 </td>
				</tr>
 <form id="form1" name="form1" method="post" action="remcarrinho.php?<?php echo $SID ?>">
		  <?php
  $n++;
  $global = $global + $total;
  $globaliva = $globaliva + (($total * $iva) / 100);
  $totalglobal = $totalglobal + $global + $globaliva;

  $totalglobal =  round($totalglobal,2);
  if ($totalglobal == round($totalglobal,0))
  $totalglobal = $totalglobal . ".00";
  if(strlen(strchr($totalglobal,".")) == 2)
  $totalglobal = $totalglobal. "0";
  $_SESSION["total"] = $totalglobal;
  }
 if ($global == round($global,0))
 $global = $global . ".00";
 else
 {
  if ($global == round($global,1))
  $global = $global . "0";
  else $global =  round($global,2);
 }
 //sem iva
 ?>
 <tr>
	 <td width="12%" align="center">
		 <div class="style29"><span class="style20" align="center"></span></div>
		</td>
		<td width="35%" align="center">
		 <div class="style29"><span class=\"style20\" align=\"center\"></span></div>
		</td>
		<td width="9%" align="center">
		 <div class="style29"><span class="style20" align="cente\"></span></div>
		</td>
		<td width="15%" align="right">
		 <div class="style29"><span class="style20" align="left"><br>Total sem IVA</br></span></div>
		</td>
		<td width="15%" align="center">
		 <div class="style29"><span class="style20" align="center"><br> € <?php echo $global ?></br></span></div>
		</td>
   </tr>
   <?php
 //iva
 $globaliva =  round($globaliva,2);
 if ($globaliva == round($globaliva,0))
 $globaliva = $globaliva . ".00";
 if(strlen(strchr($globaliva,".")) == 2)
 $globaliva = $globaliva. "0";
 ?>
 <tr>
	 <td width="12%" align="center">
		 <div class="style29"><span class="style20" align="center"></span></div>
		</td>
		<td width="35%" align="center">
		 <div class="style29"><span class="style20" align="center"></span></div>
		</td>
		<td width="9%" align="center">
		 <div class="style29"><span class="style20" align="center"></span></div>
		</td>
		<td width="15%" align="right">
		 <div class="style29"><span class="style20" align="left"><br>IVA</br></span></div>
		</td>
		<td width="15%" align="center">
		 <div class="style29"><span class="style20" align="center"><br> € <?php echo $globaliva ?></br></span></div>
		</td>
	</tr>
	<?php
 //com iva
 ?>
 <tr>
	 <td width="12%" align="center">
	  <div class="style29"><span class="style20" align="center"></span></div>
	 </td>
	 <td width="35%" align="center">
	  <div class="style29"><span class="style20" align="center"></span></div>
	 </td>
	 <td width="9%" align="center">
	  <div class="style29"><span class="style20" align="center"></span></div>
	 </td>
	 <td width="15%" align="right">
	  <div class="style29"><span class="style20" align="left" valign="middle"><br>Total com IVA</br></span></div>
	 </td>
	 <td width="15%" align="center">
	  <div class="style29"><span class="style20" align="center"><br> € <?php echo $totalglobal ?></br></span></div>
	 </td>
	</tr>
 </form>
	</table>
 <?php
  }
}
}
else
{
echo "<META HTTP-EQUIV=\"refresh\" content=\"0; URL=index.php?$SID\"> ";
?>
<script language="Javascript">
alert("Nao tem artigos no carrinho!");
</script>	
<?php
}
?>

este é o form que se pode ver em cima que tem o campo de atualização

<form action="" method="post" name="atualizar">
		 <input name="ref2" type="hidden" value="<?php echo mysql_result($rs, $n, "Quant") ?>" />
		 <input name="quantidade2" type="text" value="<?php echo mysql_result($rs, $n, "Quant") ?>" size="2" maxlength="2" />
		 <input name="atualiza" type="image" src="images/atualizar.png" width="25" height="25" />
	 </form>

este é a parte do código para atualizar

if (isset($_POST['ref2']))
  {
$sql2="UPDATE lcarrinho SET Quant='".$_POST['quantidade2']."' WHERE Carrinho = '" . $sessao . "' ";
$resultado2=mysql_db_query("******",$sql2);
  }

Edited by JFernandesVR

Share this post


Link to post
Share on other sites
Devexz

faz um echo do sql na primeira vez em que fazes update:

$sql2="UPDATE lcarrinho SET Quant='".$_POST['quantidade2']."' WHERE Carrinho = '" . $sessao . "' ";

E vê se a query está correta, e se estiver fazes a query directamente na base de dados para testar se está a funcionar ou não.

Edited by brunoais
geshi

Contador de calorias: caloriaspordia.com

Share this post


Link to post
Share on other sites
JFernandesVR

já resolvi.

tinha de por esta parte no inicio do código.

if (isset($_POST['ref2']))

{

$sql2="UPDATE lcarrinho SET Quant='".$_POST['quantidade2']."' WHERE Carrinho = '" . $sessao . "' ";

$resultado2=mysql_db_query("******",$sql2);

}

Share this post


Link to post
Share on other sites
JFernandesVR

boas pessoal

afinal nao está resolvido.

deparei com outro erro no momento em que simulei a compra de mais de um produto.

quando tento atualizar o numero de produtos do 2º produto ele nao atualiza.

presumo que seja o form de atualizar dentro do while

Edited by JFernandesVR

Share this post


Link to post
Share on other sites
brunoais

Usa o mysqli em vez do mysql.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.