JFernandesVR Posted September 27, 2013 at 01:52 PM Report #526310 Posted September 27, 2013 at 01:52 PM (edited) 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 September 27, 2013 at 01:53 PM by JFernandesVR
Devexz Posted September 27, 2013 at 09:06 PM Report #526409 Posted September 27, 2013 at 09:06 PM (edited) 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 October 1, 2013 at 03:20 PM by brunoais geshi Contador de calorias: caloriaspordia.com
JFernandesVR Posted September 30, 2013 at 09:33 AM Author Report #526737 Posted September 30, 2013 at 09:33 AM 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); }
JFernandesVR Posted September 30, 2013 at 04:18 PM Author Report #526791 Posted September 30, 2013 at 04:18 PM (edited) 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 September 30, 2013 at 04:48 PM by JFernandesVR
brunoais Posted October 1, 2013 at 03:21 PM Report #527012 Posted October 1, 2013 at 03:21 PM 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%.
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now