SHARE
TWEET

Untitled

Capaldi Nov 10th, 2018 29 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2. /**
  3.  *
  4.  * Implementa o carrinho de compras
  5.  * @author David CHC
  6.  *
  7.  */
  8. final class Carrinho{
  9.   /**
  10.    *
  11.    * Método construtor
  12.    * Caso não existe a $_SESSION['carrinho'],
  13.    * ele criar atribuindo um array vazio
  14.    *
  15.    */
  16.   public function __construct(){
  17.     if(!isset($_SESSION['carrinho'])){
  18.       $_SESSION['carrinho'] = array();
  19.     }
  20.   }
  21.   /**
  22.    *
  23.    * Adiciona um produto ao carrinho
  24.    *
  25.    * Veja que criar uma chave, tendo a composição de 2 items:
  26.    * o ID do produto e o ID da cor do produto
  27.    * Essa maneira não irá sobreescrever quando quiser
  28.    * vários produtos com cores diferentes.
  29.    *
  30.    * Um detalhe, se não tiver cor, ele atribui o valor zero,
  31.    * facilitando na hora de verificar se tem cor ou não
  32.    *
  33.    * @param integer $id é código do produto adicionado
  34.    * @param integer $qtd é  quantidade
  35.    * @param integer $cor_id é a cor do produto
  36.    *
  37.    */
  38.   public function adicionar($id_produto, $qtd = 1, $cor_id=null){
  39.     //verificar se o valor é nulo
  40.     if(is_null($cor_id)){
  41.       //Se for, monta o indice, sendo o valor para cor como 0
  42.       $indice = sprintf('%s:%s', (int)$cor_id, 0);
  43.     }else{
  44.       //Se existe um valor, atribui ao indice
  45.       $indice = sprintf('%s:%s', (int)$id_produto, (int)$cor_id);
  46.     }
  47.     /**
  48.      * Se não existir esse indice no carrinho
  49.      * Atribui ao carrinho com a quantidade
  50.      */
  51.     if(!isset($_SESSION['carrinho'][$indice])){
  52.       $_SESSION['carrinho'][$indice] = (int)$qtd;
  53.     }
  54.   }
  55.   /**
  56.    *
  57.    * Altera a quantidade do carrinho
  58.    * O indice do array é a junção do ID do produto com o ID da cor
  59.    *
  60.    * @param string $indice é a chave do array
  61.    * @param integer $qtd é quantidade para alterar
  62.    */
  63.   public function alterar($indice, $qtd){
  64.     //verifica se existe esse indice
  65.     if(isset($_SESSION['carrinho'][$indice])){
  66.       //se o quantidade for maior que zero
  67.       if($qtd > 0){
  68.         //realiza a alteração
  69.         $_SESSION['carrinho'][$indice] = (int)$qtd;
  70.       }
  71.     }
  72.   }
  73.   /**
  74.    *
  75.    * Excluir o produto do carrinho
  76.    * @param string $indice
  77.    */
  78.   public function excluir($indice){
  79.     //excluir o produto do carrinho
  80.     unset($_SESSION['carrinho'][$indice]);
  81.   }
  82.   /**
  83.    *
  84.    * Retorna um array com os dados dos produtos no carrinho
  85.    * @return array $result
  86.    */
  87.   public function listarProdutos(){
  88.     //inicia a variável com array
  89.     $result = array();
  90.     foreach($_SESSION['carrinho'] as $indice => $qtd){
  91.       //Separa o ID do produto do ID da cor
  92.       list($id_produto, $cor_id)     = explode(':', $indice);
  93.       //Realizar a busca pelo produto, selecionado apenas o nome do produto e preço
  94.       $query_product           = mysql_query("SELECT produto, preco FROM produtos WHERE id_produto = '$id_produto'");
  95.       //retorna os itens do tabela produtos
  96.       $row_product             = mysql_fetch_assoc($query_product);
  97.       /**
  98.        * Adicionar ao array o nome do produto, preço , quantidade, subtotal e a cor
  99.        * È importante reparar que indice desse array será o mesmo
  100.        * do carrinho.
  101.        */
  102.       $result[$indice]['produto'] = $row['produto'];
  103.       $result[$indice]['preco']   = $row['preco'];
  104.       $result[$indice]['qtd']     = $row['qtd'];
  105.       $result[$indice]['subtotal']= $row['preco'] * $row['qtd'];
  106.       $result[$indice]['cor']     = '';
  107.       //Verifica se existe cor para o produto
  108.       if($cor_id > 0) {
  109.         //Faz a busca pela cor , seleciona apenas o nome da cor
  110.         $query_cor         = mysql_query("SELECT cor FROM cores WHERE cor_id = '$cor_id'");
  111.         //retorna os itens do tabela cores
  112.         $row_cor           = mysql_fetch_assoc($query_cor);
  113.         //Adiciona o nome da cor
  114.         $result[$indice]['cor'] = $row_cor['cor'];
  115.       }
  116.     }
  117.     return $result;
  118.   }
  119.  
  120.   /**
  121.    *
  122.    * Retorna o valor total do carrinho
  123.    * Aqui apenas listaremos o produtos
  124.    * somaremos o subtotal, que é
  125.    * o preço vezes a quantidade
  126.    * Isso já foi calculado no método listarProdutos
  127.    */
  128.   public function valorTotal(){
  129.     //listar todos os produtos
  130.     $produtos = $this->listarProdutos();
  131.     //inicia a variável
  132.     $total    = 0;
  133.     //listar os produtos, para resgatar o subtotal
  134.    
  135.     foreach($produtos as $indice => $row){
  136.       //realiza a soma
  137.       $total += $row['subtotal'];
  138.     }
  139.    
  140.     return $total;
  141.    
  142.   }
  143. }
  144. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top