Ir para conteúdo
Fórum Script Brasil
  • 0

Classe Carrinho De Compras


Beraldo

Pergunta

Este script só funcionará com PHP 5.0 ou superior.

Esta é uma classe para manipular carrinhos de compras usando a extensão MySQLi e a classe MySQLiConnection.

carrinho.php - Classe Carrinho

<?php
#############################################
#                                           #
# Autor: Roberto Beraldo Chaiben (Beraldo)  #
#      E-Mail: rbchaiben@gmail.com          #
#                                           #
#############################################

/*
   Classe para manipulação de carrinhos de compras, com funções para adicionar produtos, remover produtos, alterar a quantidade de cada produto e cálculo do valor total da compra.
*/

class Carrinho
{
    
    /*
       Função AdicionarProduto($id)
       Adiciona ao carrinho o produto cujo id na tabela produtos seja $id, passado como parâmetro da função.
       Se o id for inválido (NULL ou ''), axibe um alerta e retorna FALSE.
       Se o produto já estiver no carrinho, exibe um alerta e retorna FALSE.
    */
    
    public function AdicionarProduto($id)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }
        
        /*
           A função ArrayCarrinho() retorna um array com os id's dos produtos e suas respectivas chaves no array $_SESSION['carrinho'].
        */
        $aCar = ArrayCarrinho();
        if (in_array ($id, $aCar))
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O produto que você selecionou já está em seu carrinho de compras.\\n Para adicionar outra unidade, altere a quantidade do produro.');
            </script>
            ";
            return false;
        }
        
        $my = new MySQLiConnection();  
        $sql = $my->query ("Select * From produtos Where id = ".$id);
        
        if ($sql->num_rows == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('Não foi encontrado um produto com esse id.');
            </script>";
            return false;
        }
        
        $f = $sql->fetch_object();
        $cod = $f->id;
        $nome = $f->nome;
        $preço = $f->preço;
        $desc = $f->descricao;
        
        //próxima chave de $_SESSION['carrinho']:
        $k = isset ($_SESSION['carrinho']) ? count ($_SESSION['carrinho']) : 0;
        
        $_SESSION['carrinho'][$k]['id'] = $cod;
        $_SESSION['carrinho'][$k]['nome'] = $nome;
        $_SESSION['carrinho'][$k]['preço'] = $preço;
        $_SESSION['carrinho'][$k]['qtde'] = 1;
        $_SESSION['total'] = $this->Total();
        $_SESSION['carrinho'][$k]['descricao'] = $desc;
        
        //ordena $_SESSION['carrinho'] por nome de produto:
        sort ($_SESSION['carrinho'], SORT_STRING);
            
    }
    
    
    /*
       Função RemoverProduto($id)
       Remove de $_SESSION['carrinho'] o produto cujo id na tabela produtos é $id, passado como parâmetro da função.
       Se o id for inválido (NULL ou ''), exibe um alerta e retorna FALSE.
    */
    
    public function RemoverProduto($id)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }
        
        // encontra a chave cujo id é o passado na função e o coloca na variável $k
        $aCar = ArrayCarrinho();
        $k = array_search ($id, $aCar);
        
        unset ($_SESSION['carrinho'][$k]);
        if (count ($_SESSION['carrinho']))//se ainda houver produtos no carrinho
        {
            //organiza as chaves do array desde zero até (count ($_SESSION['carrinho']) - 1)
            $car_keys = range (0, (count ($_SESSION['carrinho']) - 1));
            $_SESSION['carrinho'] = array_combine ($car_keys, $_SESSION['carrinho']);
        }
        $_SESSION['total'] = $this->Total();

    }
    
    
    /*
       Função AlterarQuantidade($id, $n_qtde)
       Altera a quantidade de unidades do produto cujo id é $id para $n_qtde.
       Se o id for inválido (NULL ou ''), exibe um alerta e retorna FALSE.
       Se $n_qtde for maior que zero, altera a quantidade do produto; se for igual ou menor que zero, remove-o do carrinho.
    */
    
    
    public function AlterarQuantidade($id, $n_qtde)
    {
        if ($id == NULL || $id == '' || $id == 0)
        {
            echo "
            <script type=\"text/javascript\">
            alert ('O id do produto deve ser inteiro e maior que zero');
            </script>";
            return false;
        }
        
        if ($n_qtde > 0)
        {
            // encontra a chave cujo id é o passado na função e o coloca na variável $k
            $aCar = ArrayCarrinho();
            $k = array_search ($id, $aCar);
            
            $_SESSION['carrinho'][$k]['qtde'] = $n_qtde;
            $_SESSION['total'] = $this->Total();
        }
        else
            $this->RemoverProduto($id);
    
    }
    
    
    
    
    public function Total()
    {
        $carro = isset($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();
        
        // inicia a variável $total:
        $total = 0;
        
        for ($t = 0; $t < count ($carro); $t++)
        {
            // multiplica o preço do produto por sua respectiva quantidade
            $total += $carro[$t]['preço'] * $carro[$t]['qtde'];
        }
        
        // retorna o total já formatado na forma brasileira
        return number_format ($total, 2, ",", "");
    }
    
}
array_carrinho.php - Função Array_Carrinho()
<?php
/*
 Retorna um array com os pares chave => vaor da variável $_SESSION['carrinho']

Exemplo:

$_SESSION['carrinho'][0]['id'] = 4
$_SESSION['carrinho'][1]['id'] = 10
$_SESSION['carrinho'][2]['id'] = 2

$x = ArrayCarrinho();
print_r ($x);

[0] => 4
[1] => 10
[2] => 2

*/
function ArrayCarrinho()
{
    if (!isset($_SESSION['carrinho']) || !is_array($_SESSION['carrinho']) || (count ($_SESSION['carrinho']) == 0))
        return array();
        
    $cods = array();
    $carro = isset($_SESSION['carrinho']) ? $_SESSION['carrinho'] : array();
    foreach ($carro as $k => $v)
    {
        $cods[$k] = $v['id'];
    }
    return $cods;
}
?>

O download do sistema completo pode ser feito neste link:

https://www.scriptbrasil.com.br/?class=2.3&...egoria=V%E1rios

[]'s

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...