HelpMasters - Multiplicando Ideias

Como criar um carrinho de compras com PHP


Neste tutorial vou ensinar como construir um Carrinho de Compras em PHP utilizando Sessão.

A chave de tudo é um Array na Sessão do usuário, de forma que se possa manipulá-lo na hora que quiser. Os processos são apenas incluir ou retirar produtos do Carrinho.

Vejamos...

1º Passo - Crie ou altere uma base de dados MYSQL e uma tabela

Você precisará de uma tabela de produtos, crie-a com o código abaixo:

create table produto (id int(10) unsigned not null auto_increment, descricao varchar(80) not null, primary key (id))

Insira alguns dados para serem manipulados no Carrinho com este código:

insert into produto(descricao) values ('Web Cam de 3 mega pixels'),('Mouse Óptico (cor grafite com preto)'),('Monitor 19 polegadas LCD'),('Hub de 24 portas'),('Teclado Qwert sem fio preto (anti-LER)');

2º Passo - Crie "carrinho_listar.php"

Esta é a única página que será vista. Nela haverá uma consulta à base de dados criada no passo anterior que sempre irá comparar cada item trazido com o Array da Sessão. Vamos ao código:

<?php
ob_start();
session_start();
mysql_connect("host","usuario","senha");
mysql_select_db("banco-de-dados");
$sql = "select id,descricao from produto";
$query = mysql_query($sql);
?>
<form action="carrinho_adicionar_itens.php" method="post">
    <ul>
        <?php while($linha = mysql_fetch_array($query)){ ?>
            <li>
                <?php if (empty($_SESSION['carrinho'])) { ?>
                 <input name="id_produto[]" type="checkbox" value="<?php echo $linha['id'] ?>"> <?php echo $linha['descricao'] ?>
                <?php } else { ?>
                 <?php if (in_array($linha['id'],$_SESSION['carrinho'])) { ?>
                     <input name="id_produto[]" type="checkbox" value="<?php echo $linha['id'] ?>" checked> <?php echo $linha['descricao'] ?> (<a href="carrinho_excluir_itens.php?id=<?php echo $linha['id'] ?>">retirar</a>)
                     <?php } else { ?>
                      <input name="id_produto[]" type="checkbox" value="<?php echo $linha['id'] ?>"> <?php echo $linha['descricao'] ?>
                     <?php } ?>

                <?php } ?>
            </li>
        <?php } ?>
    </ul>

    <br />

    <input type="submit" value="Adicionar item(s)" />
</form>
<!--  Diálogos com o usuário -->
<?php
if (isset($_GET['mensagem'])) {
 echo "<script>alert('".$_GET['mensagem']."');</script>";
}

?>


3º Passo - Crie "carrinho_adicionar_itens.php"

Nela insira o código abaixo:

<?php
ob_start();
session_start();
//Cria array na sessão
if (!$_SESSION['carrinho'] || $_SESSION['carrinho'] == "") {
 
 $_SESSION['carrinho'] = array();
 
 $i = 0;
 
 //Para cada produto vindo da listagem inclua no array
 foreach($_POST['id_produto'] as $produto) {
  $_SESSION['carrinho'][$i] = $produto;
  $i = $i + 1;
 }
 
 //Redireciona
 header("Location: carrinho_listar.php?mensagem=Carrinho criado e item(s) incluídos com sucesso!");
//Altera array na sessão
} else {
 
 $i = 0;
 
 //Para cada produto vindo da listagem, resgate o tamanho e inclua no array
 foreach($_POST['id_produto'] as $produto) {
 
  //Verifica item já existente
  if (in_array($produto,$_SESSION['carrinho'])) {
   header("Location: carrinho_listar.php?mensagem=Este item já está no carrinho!");
  }
 
  //conta chaves, inclui id
  $total_chaves = array_keys($_SESSION['carrinho']);
  $tamanho_array = sizeof($total_chaves);
  $_SESSION['carrinho'][$i] = $produto;
  $i = $i + 1;
 }
 //Redireciona
 header("Location: carrinho_listar.php?mensagem=Item(s) incluídos com sucesso!");
 
}
?>

4º Passo - Crie "carrinho_excluir_itens.php"

Lá insira o código abaixo:

<?php
ob_start();
session_start();
//Altera/exclui array na sessão
$id = $_GET['id'];
$chave = array_search($id, $_SESSION['carrinho']); //localiza o valor na array
unset($_SESSION['carrinho'][$chave]); //apaga
header("Location: carrinho_listar.php?mensagem=Item(s) excluídos com sucesso!");

?>

Espero que tenham gostado, até breve! ;)

Data de publicação: sexta-feira, 29 de janeiro de 2010

2687 Vizualizações

Tags:                       

Anúncio HostNet

4 Comentários

  • Muito bom

    01/02/2010 - 21:37, Carlos Pereira | #

    Henrique, parabéns pelo artigo, gostei pela linguagem clara e o conteudo auto-explicativo. abraços!

  • Dúvida

    06/02/2010 - 20:34, Marlon | #

    olá legal seu tutorial, vou precisar desenvolver um sistema de carrinho também no próximo projeto que eu vou fazer, mas e se eu criasse uma tabela temporária no banco de dados, e cada produto que o usuário clicar eu adiciono por ajax nessa tabela temporária? ai não precisaria criar arrays de sessão, funciona também se eu fizer isso? se não qual a desvantagem?
    vlw amigo
    abraço

  • codigo, carrinho e paginação em php

    03/08/2010 - 14:38, Carlos | #

    Olá Henrique tudo bem!

    sou estudante d web e gostaria d saber se você tem uma explicação mais detalhada d como inserir os pordutos no carrinho, e criar paginação. gostei muito do seu tutorial, mais por ser uma aluno principinate não consegui executar a pagina apresentou erro, fiz a conexão com o banco de dados mas não sei fazer a conexao com a pagina que contem os produtos pr que sejam iseridos no carrinho.
    Um abração ate mais
    Carlos

  • duvida

    11/08/2010 - 10:24, daniel | #

    Henrique, aqui no listar produto nao aparece nada e eu usei o codigo para criar a tabela e adicionei os produtos .

Comente :




Henrique Araujo

Henrique Araujo

Web designer há 7 anos, formado em Sistemas de Informação é atualmente analista de sistemas Outsourcing da IVIA (www.ivia.com.br) e desenvolvedor freelancer para Web. É também, de forma complementar, programador Javascript, PHP e ASP.

Site | Email | Artigos : 3

Home     Anuncie     Seja um colunista     Peça seu tutorial     Contato     Política de privacidade

Hospedado por: HostNet

www.HelpMasters.com.br | Todos os direitos reservados