• 0
Sign in to follow this  
nekiter

[Duvida] Carinho de compras

Question

Sou novo aqui neste fórum e não achei uma área para duvidas então se estiver em um local erado gostaria que o tópico fosse movido.

Obrigado desde já.

Bom eu estou fazendo uma pizzaria online, eu estou tentando fazer a loja, ela funciona até que bem... o único problema é:

Eu não faço ideia de como salvar o pedido no banco de dados/finalizar pedido eu gostaria de saber se alguém pode me dar uma força.

Link do carrinho + banco de dados:

http://www.4shared.com/rar/dTAZDDYb/loja.html

Obrigado novamente.

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 0

o teu carrinho vai trabalha com uma variavel array ou uma SESSION para salvar no banco você vai extrair cada dados do array e da o insert.

caso tenha alguma duvida de como fazer poste o código do seu crrinho aqui para gente ver e detalhe a sua duvida.. assim fica mais facil ir direto ao ponto.

Share this post


Link to post
Share on other sites
  • 0

Eu já tinha imaginado isso... porem tenta acompanhar meu raciocínio...

Um pedido tem mais de um item certo? como vou fazer para inserir todos os itens no pedido(isso estou dizendo no banco de dados)

E você pediu os codigos:

Data base

CREATE TABLE IF NOT EXISTS `produtos` (
  `id` int(10) NOT NULL DEFAULT '0',
  `nome` varchar(50) DEFAULT NULL,
  `preço` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
conexão.php:
<?php 
      mysql_connect("localhost", "root", "");
      mysql_select_db("alunos_carrinho");
?>
index.php:
<!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>
<?php 
      require("conexao.php");
      
      $sql = "SELECT * FROM produtos";
      $qr = mysql_query($sql) or die(mysql_error());
      while($ln = mysql_fetch_assoc($qr)){
         echo '<h2>'.$ln['nome'].'</h2> <br />';
         echo 'Preço : R$ '.number_format($ln['preço'], 2, ',', '.').'<br />';
         echo '<a href="carrinho.php?acao=add&id='.$ln['id'].'">Comprar</a>';
         echo '<br /><hr />';
      }
?>

</body>

</html>
carrinho.php:
<?php 
      session_start();
      
      if(!isset($_SESSION['carrinho'])){
         $_SESSION['carrinho'] = array();
      }
      
      //adiciona produto
      
      if(isset($_GET['acao'])){
         
         //ADICIONAR CARRINHO
         if($_GET['acao'] == 'add'){
            $id = intval($_GET['id']);
            if(!isset($_SESSION['carrinho'][$id])){
               $_SESSION['carrinho'][$id] = 1;
            }else{
               $_SESSION['carrinho'][$id] += 1;
            }
         }
         
         //REMOVER CARRINHO
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
         }
         
         //ALTERAR QUANTIDADE
         if($_GET['acao'] == 'up'){
            if(is_array($_POST['prod'])){
               foreach($_POST['prod'] as $id => $qtd){
                  $id  = intval($id);
                  $qtd = intval($qtd);
                  if(!empty($qtd) || $qtd <> 0){
                     $_SESSION['carrinho'][$id] = $qtd;
                  }else{
                     unset($_SESSION['carrinho'][$id]);
                  }
               }
            }
         }
      
      }
      
      
?>
<!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="carrinho.php?acao=up" method="post">
    <tfoot>
           <tr>
            <td colspan="5"><input type="submit" value="Atualizar Carrinho" /></td>
            <tr>
            <td colspan="5"><a href="index.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("conexao.php");
                                                               $total = 0;
                        foreach($_SESSION['carrinho'] as $id => $qtd){
                              $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
                              $qr    = mysql_query($sql) or die(mysql_error());
                              $ln    = mysql_fetch_assoc($qr);
                              
                              $nome  = $ln['nome'];
                              $preço = number_format($ln['preço'], 2, ',', '.');
                              $sub   = number_format($ln['preço'] * $qtd, 2, ',', '.');
                              
                              $total += $ln['preço'] * $qtd; 
                           
                           echo '<tr>        
                                 <td>'.$nome.'</td>
                                 <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>
                                 <td>R$ '.$preço.'</td>
                                 <td>R$ '.$sub.'</td>
                                 <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                              </tr>';
                        }
                           $total = number_format($total, 2, ',', '.');
                           echo '<tr>
                                    <td colspan="4">Total</td>
                                    <td>R$ '.$total.'</td>
                              </tr>';
                     }
                     $_SESSION['total'] = $total;
               ?>
   
     </tbody>

        </form>
</table>
    <form name="finalisa" action="finalisa.php?acao=''" method="post">
        <input type="submit" value="Finalizar compra" />
    </form>
</body>
</html>
finalisa.php:
<?php
    session_start();
         //REMOVER CARRINHO
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['carrinho'][$id])){
               unset($_SESSION['carrinho'][$id]);
            }
         }
?>
<h2>Finalizar pedido</h2>
<?php
    echo"Itens comprados";

     ?>
     <table>
      <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>
          <?php
                     if(count($_SESSION['carrinho']) == 0){
                        echo '<tr><td colspan="5">Não há produto no carrinho</td></tr>';
                     }else{
                        require("conexao.php");
                        $total = 0;
                        foreach($_SESSION['carrinho'] as $id => $qtd){
                              $sql   = "SELECT *  FROM produtos WHERE id= '$id'";
                              $qr    = mysql_query($sql) or die(mysql_error());
                              $ln    = mysql_fetch_assoc($qr);
                              
                              $nome  = $ln['nome'];
                              $preço = number_format($ln['preço'], 2, ',', '.');
                              $sub   = number_format($ln['preço'] * $qtd, 2, ',', '.');
                              
                              $total += $ln['preço'] * $qtd; 
                           
                           echo '<tr>        
                                 <td>'.$nome.'</td>
                                 <td>'.$qtd.'</td>
                                 <td>R$ '.$preço.'</td>
                                 <td>R$ '.$sub.'</td>
                                 <td><a href="?acao=del&id='.$id.'">Remove</a></td>
                              </tr>';
                        }
                           $total = number_format($total, 2, ',', '.');
                           echo '<tr>
                                    <td colspan="4">Total</td>
                                    <td>R$ '.$total.'</td>
                              </tr>';
                     }
                     
?></table>
<form action="">
Comentarios sobre a compra:<br />
<textarea name="Comentario" rows="10" cols="40" size="60" />
</textarea><br>
<input type="submit" value="Prossegir" />
</form>

Share this post


Link to post
Share on other sites
  • 0

Pelo o que eu observei em teu código ele já está fazendo isso.

//adiciona produto
      
      if(isset($_GET['acao'])){
        
         //ADICIONAR CARRINHO
         if($_GET['acao'] == 'add'){
            $id = intval($_GET['id']);
            if(!isset($_SESSION['carrinho'][$id])){
               $_SESSION['carrinho'][$id] = 1;
            }else{
               $_SESSION['carrinho'][$id] += 1;
            }
         }
vamos interpreta esta parte do código. se a variavel url acao for add faça: variavel id recebe o valor de tipo inteiro da variavel url id se não existir a sessao de carrinho de id (id provavelmente é o id do produto.) faça : sessao carrinho de id recebe 1 se não sessao carrinho de id recebe + 1 (no caso uma somatoria para aumenta a quantidade de produtos no carrinho) certo so para voce entender se eu adicionar um produto ele vai pega o ID e vai verificar na session carrinho dakele id se já existe se existir ele vai adicionar 1 sendo assim produto tal tem tantas quantidades sendo assim o seu carrinho muda a cada produto... para uma exemplificação melhor. vamos supor que eu adicionei um livro de php no meu carrinho e ele é do id - 785
$_SESSION['carrinho'][785] = 1;
a eu quero agora colocar um livro de AJAX - 678
$_SESSION['carrinho'][678] = 1;
agora vou adicionar mais um livro de php para um colega que solictou um favor.
$_SESSION['carrinho'][785] += 1;

ou seja o carrinho de id - 785 tem o valor 2 INT sendo assim já sei que são 2 unidades de produtos..

não sei se me expressei bem, mas seria isto.

Edited by JaguA

Share this post


Link to post
Share on other sites
  • 0

O que você quer dizer com mais de um item no pedido?

Pois eu expliquei como adiciona + de 1 produto e como adicionar + quantidades deste produto

sendo assim seria o item no pedido

se eu tenho o pedido de um mouse e quero pedir + 5 itens seria + produtos diferente, o que volta ao que eu expliquei no post anterior...

sinceramente não to entendedo o que você deseja, se puder ser mais especifico.

Share this post


Link to post
Share on other sites
  • 0

Por exemplo eu tenho uma coluna item na tabela pedido certo?

A compra pode ter mais de um item... logo eu teria q ter varias colunas ou o modo que não sei fazer

eu gostaria de saber os modos possiveis

Share this post


Link to post
Share on other sites
  • 0

Cara o que veio na minha mente aqui agora e não estou 100% do que vou afirmar seria um loop

ou seja

você pega todos os itens cria um loop para cadastrar item por item

sendo assim você vai ter

Id

Pedido

Item

Quantidade

Valor do item

assim voc registra no banco da seguinte forma ao finalizar a compra ele vai gerar um numero de pedido que vai ser igual para todos os itens assim voc cria o loop de insert com esse mesmo numero para todos os produto alternando o valro e quantidade e cod de produto .. o Id que ficaria no banco pode-se tratar como o N. da venda e tals é uma ideia.. não estou 100% certo distou, ao chegar em casa, se eu lembrar (rsrs) vou da uma olhada no que eu tenho e posto aqui novamente...

a sim no caso de ver a ultima compra feita é so fzr um select pelo n de pedido assim retornando todos os itens do pedido e usar o SUM para somar e mostra com o valor total do pedido inclusive ^^.

olha eu dei uma pesquisada aqui e seria desta forma mesmo...

é so da um loop no array carrinho pegando os produtos e cadastrando um a um no banco tendo um numero fixo no caso o numero de compra/pedido para poder fazer um select deles posteriormente.

Edited by JaguA

Share this post


Link to post
Share on other sites
  • 0

Muito obrigado... espero ansiosamente...

Eu já havia pensando em fazer mais ou menos isso porem não sei como por em pratica, acompanhe meu raciocínio:

-Eu teria 4 tabela(cliente, produtos, venda, produtos_venda)

-Teria 3 chaves estrangeiras uma do cliente de ligando a venda(id_cliente) uma da venda se ligando com produtos venda(não sei) uma dos produtos venda se ligando ao produtos.

A partir deste momento não sei o que fazer.

Mas vou esperar sua possível resposta =D obrigado

Share this post


Link to post
Share on other sites
  • 0

hasuahsua

olha eu não sei exatamente como é sua loja muito menos sua ideia... mas partindo de algo logico e do que você já citou podes fazer o segiunte.

TABELA -> Produtos ( registro de todos os produtos )

TABELA -> Vendas

TABELA-> Cliente

Bem ao finalizar uma compra voce vai gerar o numero da compra ...

apos isso fara o insert na tabela vendas do carrinho

vamos supor que voce tenha no carrinho 3 camisas (2585)| 2 shorts (8784) | 1 oculos (1751) -> N de compra 00052

na sua tabela ficaria assim

VENDAS

ID | Id_Produto | Quantidade | Valor | Nu_Compra | ID_Cliente

_______________________________________________________

01 | 2585 | 000003 | 28.55 | 00052 | 15

02 | 8784 | 000002 | 45.77 | 00052 | 15

03 | 2585 | 000001 | 77.15 | 00052 | 15

ela ficaria assim agora seu eu fizer a compra de 1 camisa(7487) e 1 bone(8935) ficaria assim.

ID | Id_Produto | Quantidade | Valor | Nu_Compra | ID_Cliente

_______________________________________________________

01 | 2585 | 000003 | 28.55 | 00052 | 15

02 | 8784 | 000002 | 45.77 | 00052 | 15

03 | 2585 | 000001 | 77.15 | 00052 | 15

04 | 7487 | 000001 | 25.00 | 00097 | 18

05 | 8935 | 000001 | 13.47 | 00097 | 18

Conseguio entender?

agora os campos que você realmente vai usar é com você para atender a suas nescessidades. isto é so um exemplo pratico.

Share this post


Link to post
Share on other sites
  • 0

o ID é auto_increment e no caso de ter que selecionar ou deletar algo ele ajuda bastante.

o que você precisa entender como a tabela vai funcionar para fazer o cadastro e como você deve fazer o select para selecionar o carirnho deste cliente e tudo mais...

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this