Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite! estou com o seguinte problema:
Tenho um codigo de carrinho de compras que utiliza array.
segue codigo:
Carrinho.php
<?php
session_start();
require("config/conexao.php");
if(!isset($_SESSION['carrinho'])){
$_SESSION['carrinho'] = array();
}
//adiciona produto
if(isset($_GET['acao'])){
//ADICIONAR CARRINHO
if($_GET['acao'] == 'add'){
$cod_produto = intval($_GET['cod_produto']);
if(!isset($_SESSION['carrinho'][$cod_produto])){
$_SESSION['carrinho'][$cod_produto] = 1;
}else{
$_SESSION['carrinho'][$cod_produto] += 1;
}
}
//REMOVER CARRINHO
if($_GET['acao'] == 'del'){
$cod_produto = intval($_GET['cod_produto']);
if(isset($_SESSION['carrinho'][$cod_produto])){
unset($_SESSION['carrinho'][$cod_produto]);
}
}
//ALTERAR QUANTIDADE
$sql = "SELECT * FROM produtos WHERE cod_produto= '$cod_produto'";
$qr = mysql_query($sql) or die(mysql_error());
$ln = mysql_fetch_assoc($qr);
$estoqAtual = $ln['estoque_atual'];
if($_GET['acao'] == 'up'){
if(is_array($_POST['carrinho'])){
foreach($_POST['carrinho'] as $cod_produto => $qtd){
$cod_produto = intval($cod_produto);
$qtd = intval($qtd);
if(!empty($qtd) || $qtd <> 0) {
$_SESSION['carrinho'][$cod_produto] = $qtd;
}
}
else{
unset($_SESSION['carrinho'][$cod_produto]);
}
}
}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="[http://www.w3.org/1999/xhtml">](http://www.w3.org/1999/xhtml)
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Video Aula sobre Carrinho de Compras</title>
</head>
<body>
<table>
<caption>Carrinho de Compras</caption>
<thead>
<tr>
<th width="244">Produto</th>
<th width="79">Quantidade</th>
<th width="89">Preço</th>
<th width="100">SubTotal</th>
<th width="64">Remover</th>
</tr>
</thead>
<form action="?acao=up" method="post">
<tfoot>
<tr>
<td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
<tr>
<td colspan="5"><a href="index2.php">Continuar Comprando</a></td>
</tfoot>
<tbody>
<?php
if(count($_SESSION['carrinho']) == 0){
echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>';
}else{
require("config/conexao.php");
$total = 0;
foreach($_SESSION['carrinho'] as $cod_produto => $qtd){
$sql = "SELECT * FROM produtos WHERE cod_produto= '$cod_produto'";
$qr = mysql_query($sql) or die(mysql_error());
$ln = mysql_fetch_assoc($qr);
$nome = $ln['nome_produto'];
$preco = number_format($ln['valor_produto'], 2, ',', '.');
$sub = number_format($ln['valor_produto'] * $qtd, 2, ',', '.')
$total += $ln['valor_produto'] * $qtd;
echo '<tr>
<td>'.$nome.'</td>
<td><input type="text" size="3" name="carrinho['.$cod_produto.']" value="'.$qtd.'" /></td>
<td>R$ '.$preco.'</td>
<td>R$ '.$sub.'</td>
<td><a href="?acao=del&cod_produto='.$cod_produto.'">Remove</a></td>
</tr>';
}
$total = number_format($total, 2, ',', '.');
echo '<tr>
<td colspan="4">Total</td>
<td>R$ '.$total.'</td>
</tr>';
}
?>
</tbody>
</form>
</table>
</body>
</html>
Eu preciso que, quando o usuario alterar a quantidade desejada, seja
feita uma consulta de estoque para que o usuario nao possa digitar uma quantidade
maior do que há no estoque.
E tem outro problema: Quando adiciono um produto ao carrinho, se eu apertar F5,
a quantidade aumenta.
Podem me ajudar?
Carregando comentários...