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

[Duvida] Carinho de compras


nekiter

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 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.

Link para o comentário
Compartilhar em outros 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>

Link para o comentário
Compartilhar em outros 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.

Editado por JaguA
Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros 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.

Editado por JaguA
Link para o comentário
Compartilhar em outros 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

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros 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...

Link para o comentário
Compartilhar em outros sites

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,5k
×
×
  • Criar Novo...