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

Total no carrinho de compras


Clayton

Pergunta

Caros amigos gostaria da ajuda de vocês pois estou com muita dificuldade para fazer meu carrinho de compras exibir o preço e calcular o total automaticamente, gostaria de ajuda

para poder resolver este problema. abaixo o código do carrinho:


<?php
      session_start();


      if(!isset($_SESSION['shop'])){
         $_SESSION['shop'] = array();
      }

      //adiciona produto

        if(isset($_GET['acao'])){
         if($_GET['acao'] == 'add'){
              $id = intval($_GET['id']);
              if(!isset($_SESSION['shop'][$id])){
                $_SESSION['shop'][$id] = 1;
           }
        }


         //REMOVER shop
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['shop'][$id])){
               unset($_SESSION['shop'][$id]);
            }
         }

//ALTERAR QUANTIDADE

    //Se existir $_POST['prod'] então começa..
        if( isset( $_POST['prod'] ) )

        if($_GET['acao'] == 'atualizar'){

           if(is_array($_POST['prod'])){
              foreach($_POST['prod'] as $id => $qtd){
                 $id  = intval($id);
                 $qtd = intval($qtd);
                 if(!empty($qtd) || $qtd <> 0){
                    $_SESSION['shop'][$id] = $qtd;
                 }else{
                    unset($_SESSION['shop'][$id]);
                 }
              }
           }
        }

     }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlinhas="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-utf8" />
<title>Seja Bem Vindo !</title>
</head>
<link rel="stylesheet" type="text/css" href="css/default.css" />
<body>
<head>
<div align = "center"><h2>Suas Compras Efetuadas:</h2>
  <br>
<form action="shop.php?acao=up" method="post">
<table border="1" color = width="100%">
<tr>
   <td width="10%"><strong>FOTO</strong></td>
   <td width="10%"><strong>NOME</strong></td>
   <td width="10%"><strong>DESCRIÇÃO</strong></td>
   <td width="10%"><strong>TAMANHO</strong></td>
   <td width="10%"><strong>COR</strong></td>
   <td width="10%"><strong>PREÇO</strong></td>
   <td width="10%"><strong>QTD.</strong></td>
   <td width="10%"><strong>SUBTOTAL</strong></td>
   <td width="10%"><strong>REMOVER</strong></td>
      </tr>
 </thead>
 </br>
           <form action="?acao=atualizar" method="post">
   <tfoot>
          <tr>
           <td colspan="9"><input type="submit" value="Atualizar" /></td>
           <tr>
           <td colspan="9"><a href="./index.php">Continuar Comprando</a></td>
           <tr>
           <tr>
           <td colspan="9"><a href="./admin/finalizar.php">Finalizar Pedido</a></td>
   </tfoot>
   <tbody>
     <?php
     $total = 0;
if(count($_SESSION['shop']) == 0){
echo '<tr><td colspan="9"><div class = "#" align ="center">O cesto de compras esta vazio ! </td></tr>';
}else{
  foreach($_SESSION['shop'] as $id => $qtd){
   $conn = new PDO("mysql:host=localhost;dbname=loja", "root", "");
   $cart = $conn->prepare("SELECT * FROM `produtos` WHERE  `id` = '$id' ");
   $cart->execute(array());
   $cart->setFetchMode(PDO::FETCH_ASSOC);
   $cart->execute();

   while($linha = $cart->fetch()) {
       $foto  = $linha['foto'];
       $nome  = $linha['nome'];
       $descricao  = $linha['descricao'];
       $tamanho  = $linha['tamanho'];
       $cor  = $linha['cor'];
       $preço   = number_format((float)$linha['preço'] * $qtd, 2, ',', '.');

       $sub   = number_format((float)$linha['preço'] * $qtd, 2, ',', '.');
       $total += $linha['preço'] * $qtd;
      // $total = number_format($total, 2, ',', '.');
        echo '<tr>';
        echo '<td><img src = "'.$foto.' " width = "100px"</td>';
        echo '<td>'.$nome.'</td>';
        echo '<td>'.$descricao.'</td>';
        echo '<td>'.$tamanho.'</td>';
        echo '<td>'.$cor.'</td>';
        echo '<td>R$ '.$preço.'</td>';
        echo '<td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td>';
        echo '<td>R$ '.$sub.'</td>';
        echo '<td colspan = "9"><a href="?acao=del&id='.$id.'"><img src="./imagens/remover.png" width="70" height="70" ></td>';
        echo '</tr>';
                               }

        echo '<tr>';

 


  }
  }

                 ?>

 

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Oi Clayton!

Aparentemente, a variável $total vai somando os preços dos produtos...

Mas no trecho de código, não pude perceber onde é exibido o valor da variável $total.

Se você tentar algo do tipo: echo $total; Depois do final do while, Que valor aparece na tela???

Link para o comentário
Compartilhar em outros sites

  • 0

Este é o carrinho:

<?php
include(dirname(__FILE__) . './funcao/conecta.php');
//include(dirname(__FILE__) . './classes/shop.class.php');
    session_start();


      if(!isset($_SESSION['shop'])){
         $_SESSION['shop'] = array();
      }

      //adiciona produto

        if(isset($_GET['acao'])){
         if($_GET['acao'] == 'add'){
              $id = intval($_GET['id']);
              if(!isset($_SESSION['shop'][$id])){
                $_SESSION['shop'][$id] = 1;
           }
        }
        //subtrari produto do cesto
                 if($_GET['acao'] == 'sub'){
                    $id = intval($_GET['id']);
                    if(!isset($_SESSION['shop'][$id])){
                       $_SESSION['shop'][$id] = 1;
                    }else{
                       $_SESSION['shop'][$id] -= 1;
                    }if  ($_SESSION['shop'][$id] == 0 ) {
        unset ($_SESSION['shop'][$id]) ;
        }
                 }

         //remove produto do cesto
         if($_GET['acao'] == 'del'){
            $id = intval($_GET['id']);
            if(isset($_SESSION['shop'][$id])){
               unset($_SESSION['shop'][$id]);
            }
         }

         //ALTERAR QUANTIDADE
             //Se existir $_POST['prod'] então começa..
             if (isset($_POST['prod']))
             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['shop'][$id] = $qtd;
                  }else{
                     unset($_SESSION['shop'][$id]);
                  }
               }
            }
         }

      }


aki as variáveis:

 $foto = $linha['foto'];
                                   $nome = $linha['nome'];
                                   $descricao = $linha['descricao'];
                                   $tamanho = $linha['tamanho'];
                                   $cor = $linha['cor'];
                                   $preço = $linha['preço'];
                                   $linha['preço'] = str_replace(",",".",$linha['preço']);

                                  $sub = str_replace(",",".",$linha['preço']) * $qtd ;

                                  $total += $preço;

 

aki os inputs:

  echo '<td><strong><font size="4" color="yellow">R$ '.$preço.'</td>';
        echo' <td><input type="text" size    ="3" name="prod['.$id.']" value="'.$qtd.'" /></td>';
        echo '<td><strong><font size="4" color="yellow">R$ '.$sub.'</td>';

Está aparecendo assim:

 

Como posso fazer para alterar no meu carrinho  a quantidade e atualizar o subtotal  automaticamente em ajax , não conheço ajax , gostaria que alguém pudesse me mostrar como fazer,pois como na imagem quando adiciono 1 produto ele mostra o preço e a quantidade certa, mas se adiciono mais um ele não calcula.

1.png

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