Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Maxweell

[Resolvido] Carrinho de compras utilizando Array

Recommended Posts

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">
<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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom consegui resolver o problema que adicionava mais uma unidade ao apertar F5.

era só comentar a linha

 

}else{               
//$_SESSION['carrinho'][$cod_produto] += 1; 
}

Mas agora, eu preciso que some o total de quantidades,

Alguem sabe como somo os itens listados pelo foreach?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.