Jump to content
Aureo Almeida

Determinar quantidade de produtos no carrinho de compra sem múltiplas seleções

Recommended Posts

Estou tentando modificar um projeto de carrinho de compras cujo script peguei entre vários que está disponível na internet. Ele funciona bem, porém com uma determinada lógica: a quantidade de itens de um produto é aumentada conforme a quantidade de vezes que o cliente adicionar o produto. Ou seja, se ele for na página do produto para inseri-lo 3 vezes, ele aumenta a quantidade para 3. O problema é que no projeto que estou desenvolvendo os produtos possuem possibilidade de escolha de quantidade, pois podem ser vários e não dá para a pessoa ir e clicar 15 vezes nele.

E não estou conseguindo mudar está lógica. O que eu gostaria é que quando o cliente selecionasse uma quantidade, e isso não é um problema, essa quantidade fosse recebida na página do carrinho junto com outras informações do produto puxado pela id dele no banco de dados.

Este é o script básico:

<?php
	$item_carrinho = 0;
	if(count($_SESSION['carrinho']) > 0){
		foreach($_SESSION['carrinho'] as $id_produtos_carrinho => $quantidade_produto_carrinho){
			$item_carrinho++;
			$query = "SELECT * FROM psd_produtos WHERE psd_produtos.prd_id = '".$id_produtos_carrinho."'";
			$read_produto_carrinho = mysqli_query($conn, $query) or die(mysql_error());
			
			if(mysqli_num_rows($read_produto_carrinho) > 0){
				foreach($read_produto_carrinho as $read_produto_carrinho_view);
				$valor_total_produto_carrinho = $quantidade_produto_carrinho * $read_produto_carrinho_view['prd_valor'];
				$valor_total_venda += $valor_total_produto_carrinho;
			}
		echo '
		<tr>
			<td class="car-item">'.$item_carrinho.'</td>
			<td class="car-nome">'.$read_produto_carrinho_view['prd_nome'].'</td>
			<td class="car-valor">'.number_format($read_produto_carrinho_view['prd_valor'], 2, ',', '.').'</td>
			<td class="car-qtd">'.$quantidade_produto_carrinho.'</td>
			<td class="car-total">'.number_format($valor_total_produto_carrinho, 2, ',', '.').'</td>
			<td class="car-opcao"><a href="deletar-prod1.php?id='.$id_produtos_carrinho.'" class="opcao">Excluir<a/></td>
		</tr>
	';
		}
	}
	?>

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mercadohidro
      Gente, como faço para trocar o modo de abrir do carrinho no meu site da Tray?
      Quando um cliente adiciona algo no Carrinho fica lá, daí quando ele vai checar o que colocou lá, o carrinho leva ele pra outra página.
      Quero saber como clicar no carrinho e continuar na página do meu site? Só quero que abra uma aba lateral do carrinho, e não que ele vá para outra página.
      Me ajudem, por favor.
    • By tiagoRodrigo25
      Olá, estou criando um mini projeto que consiste em um sistema de pedido para auto-atendimento para lanchonetes e restaurante, mas estou com dificuldades  em inserir a quantidade  para fazer o calculo e gerar o total da compra, alguém poderia me ajudar uma forma de  gerar isto, não consegui e  estou sem ideia, até em sites gringos já fui, mas não encontrei nada alguém me dá uma luz por favor.
       
       
       
       
      Banco:
      CREATE TABLE IF NOT EXISTS `produto` (
        `id` int(11) NOT NULL,
        `descricao` varchar(50) NOT NULL,
        `preco` double(10,2) NOT NULL
      ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
       
      CREATE TABLE IF NOT EXISTS `itensvenda` (
        `id` int(11) NOT NULL,
        `idVend` int(11) NOT NULL,
        `idProd` int(11) NOT NULL,
        `qtd` varchar(10) NOT NULL
      ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
       
      CREATE TABLE IF NOT EXISTS `venda` (
        `id` int(11) NOT NULL,
        `valor` double(10,2) NOT NULL
      ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
       
       
       
      conexão:
      <?php
      $conect = mysqli_connect("localhost","root","root","teste");
      ?>
       
       
      index:
      <?php
      session_start()?>
       
      <?php
      if (isset($_SESSION['venda'])){
      }else{
            $_SESSION['venda'] = array();
      }

         

      if(isset($_GET['del'])){
          $del = $_GET['del'];
          unset($_SESSION['venda'][$del]);
          }
          
      ?>     
      <html>
      <title> Produto</title>
      <body>
      <?php
      include_once("config.php");
      ?>
      <h1>produtos</h1>
      <ul>
      <?php
      $sql= mysqli_query($conect,"select * from produto");
      while($res = mysqli_fetch_array($sql)){
      ?>
      <li>
                   <span><?php echo $res['descricao']?></span>
                   <strong><a href="index.php?par=<?php echo $res['id']?>"><?php echo number_format ($res['preco'],2,".",".");?></a></strong>
      </li>
      <?php
      }
      ?>
      </ul>
      <table width="700" border="1">
                                   <tr>
                                   <td>produto:</td>
                                   <td>valor:</td>
                                   <td>quantidade:</td>
                                   <td>açoes:</td>
                                   </tr>
      <form action="" enctype="multipart/form-data" method="post">
      <?php

                                  foreach($_SESSION['venda'] as $id => $quantidade):
       
                                             $sqlCarrinho = mysqli_query($conect,"select * from produto where id = '$id'");
                                             $resAssoc = mysqli_fetch_assoc($sqlCarrinho);

       echo '<tr>
            <td>'.$resAssoc['descricao'].'</td>
            <td>' .$resAssoc['preco'].'</td>
            <td>'<input type="text" name="qtd" value="1"/>'</td>
            <td><a href="index.php?del='.$resAssoc['id'].'">x</a></td>
        echo <tr>';
        
       $totalProduto += $resAssoc['preco'] * $quantidade;
        echo '<tr>';
        
       endforeach;
               echo '<tr>';
               echo '<td colspan="4" align="right">R$ '.number_format($totalProduto,2,".",".").'</td>';
               echo '</tr>';
       ?>
       <?php
       if(isset($_POST['enviar'])){
           $sqlInseriVenda= mysqli_query($conect,"insert into venda(valor)values('$totalProduto')");
           $idVenda = mysqli_insert_id($conect);
           foreach ($_SESSION['venda'] as $proInsert => $quantidade) :
               $sqlInserItens = mysqli_query($conect,"insert into itensvenda(idVend,idProd,qtd) values('$idVenda','$proInsert','$quantidade')");
           endforeach;
           echo "<script> alert('venda concluida com sucesso')</script>";
               # code...
           }
       
       ?>
        
        </table>
        
            <input align="right" type="submit" name="enviar" value="finalizar pedido">
        </form>
      </body>
      </html>
       
       
       
       
       
       
       
       
       
       
       
       
       
       
    • By rodolfo_alves
      Olá pessoas, sou novato em PHP, estou estudando a linguagem e ao mesmo tempo tentando criar algo com o que aprendi. Quando tenho dúvidas procuro na net, tópicos e ou scripts já prontos que me façam entender. Todavia desta vez não encontrei algo claro.
      Estou criando um mini sistema de vendas, do qual me permite adicionar uma lista de itens. Daí está o problema, como não tenho um conhecimento avançado de arrays não estou sabendo pegar os dados da lista criada e passar para o BD. Só consigo passar a última informação criada na lista.
       

      Aqui está o exemplo.
       
      <?php // inicio consulta url if(!isset($_SESSION['itens'])){ $_SESSION['itens'] = array(); } if(isset($_GET['acao'])){ $id = $_GET['id']; // Adiciona ao carrinho if($_GET['acao'] == 'add'){ if(!isset($_SESSION['itens'][$id])){ $_SESSION['itens'][$id] = 1; }else{ $_SESSION['itens'][$id] += 1; } } // Diminui carrinho if($_GET['acao'] == 'dim'){ if(!isset($_SESSION['itens'][$id])){ $_SESSION['itens'][$id] = 1; }else{ if($_SESSION['itens'][$id] > 1) $_SESSION['itens'][$id] -= 1; } } //deleta item do carrinho if($_GET['acao'] == 'del'){ $id = intval($_GET['id']); if(isset($_SESSION['itens'][$id])){ unset($_SESSION['itens'][$id]); } } } // fim consulta url // inicio consulta para adicionar if(count($_SESSION['itens']) == 0){ ?> <br> <div class="alert alert-danger alert-dismissible"> <button type="button" class="close" data-dismiss="alert">&times;</button> <strong>LISTA VAZIA:</strong> Para adicionar produtos/servicos realize a busca. </div> <br> <?php }else{ require_once('db.class.php'); $objDb = new db(); $link = $objDb -> conecta_mysql(); $total = 0; foreach ($_SESSION['itens'] as $idProdutos => $quantidade) { $sql = "SELECT * FROM produtos WHERE id='$idProdutos'"; $consultado = mysqli_query($link, $sql) or die(mysql_error()); $linha = mysqli_fetch_array($consultado); $id = $linha['id']; $codigo = $linha['codigo']; $produto = $linha['produto']; $quantidade_disp = $linha['qtd']; $valor = $linha['valor']; $subTotal = $linha['valor'] * $quantidade; $total += $linha['valor'] * $quantidade; ?> <tr> <td><input type="hidden" name="codigo_produto" value=""><?= $codigo; ?></td> <td><input type="hidden" name="nome_produto" value=""><?= $produto; ?></td> <td><input type="hidden" name="qtd_produto" value=""><?= $quantidade_disp; ?></td> <td> <a href="gerar_pedidos_admin.php?acao=dim&id=<?= $id; ?>"><span class="glyphicon glyphicon-minus" style="color: red"></span></a> <input type="number" name="qtd_produto1" min="1" max="<?= $quantidade_disp; ?>" value="<?= $quantidade; ?>"> <a href="gerar_pedidos_admin.php?acao=add&id=<?= $id; ?>"><span class="glyphicon glyphicon-plus" style="color: green"></span></a> </td> <td><input type="hidden" name="valor_produto" value="">R$ <?= number_format($valor,2,",", "."); ?></td> <td>R$ <?= number_format($subTotal,2,",", ".");?></td> <td><a href="gerar_pedidos_admin.php?acao=del&id=<?= $id; ?>"><span class="glyphicon glyphicon-remove" style="color: red;"></span></a></td> </tr> <?php } ?> <tr> <td></td> <td></td> <td></td> <td></td> <td></td> <td></td> <td><label>Total</label><br>R$ <input type="hidden" name="total_pedido" value=""><?= number_format($total,2,",", ".");?></td> </tr> <?php } ?> A pergunta e dúvida é como posso pegar os dados da lista e adicionar ao BD. Eu sei que é para usar um foreach ou um while, todavia só consigo passar a última informação da lista de modo repetido. Gostaria de uma ajuda. Não precisa faz de acordo com o meu código, gostaria de um exemplo prático.
       
      Abçs.
       
       
    • By Rafael Motta
      Boa tarde, estou tentando entender como faço para manter o valor do "Tamanho" na minha $_SESSION... no carrinho de compras... toda vez que insiro um produto o tamanho muda junto pelo valor do ultimo inserido... seguem os codigos, caso alguem saiba... Obrigado!
       
       
      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']); $tam = $_POST['tam']; 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]); } } } } } ?> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Pedidos</title> <link href="css/bootstrap.min.css" rel="stylesheet"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <title>Carrinho</title> <style> #interna{ text-align: center; } </style> </head> <body> <div class="col-md-12"> <table class="table table-striped" border="1px" width=300 height=100 bgcolor="#d9d9d9"> <caption>Carrinho de Compras</caption> <thead> <tr> <th>Produto</th> <th>Quantidade</th> <th>Preço</th> <th>SubTotal</th> <th>Remover</th> </tr> </thead> <form action="?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){ $pdo= conecta(); $resultado = $pdo ->prepare("SELECT max(ID_LISTA)AS ID FROM listas_preco where cod_cliente = 1"); $resultado->execute(); $lista = $resultado->fetch(PDO::FETCH_ASSOC); $result = $pdo ->prepare("SELECT PRODUTOS.CODIGO, PRODUTOS.DESCRICAO AS DESC, listas_itens.PRECO FROM listas_itens inner join produtos on (listas_itens.cod_produto = produtos.codigo) inner join grupos_produto on (produtos.cod_grupo = grupos_produto.codigo) WHERE PRODUTOS.CODIGO=".$id." and (listas_itens.id_lista = '".$lista['ID']."')"); $result->execute(); $ln = $result->fetch(PDO::FETCH_ASSOC); $nome = $ln['DESC']; $preco = number_format($ln['PRECO'], 2, ',', '.'); $sub = number_format($ln['PRECO'] * $qtd, 2, ',', '.'); $total += $ln['PRECO'] * $qtd; echo '<tr height=70>' . '<td><p>'. $nome .'</p><br/> Tamanho: '. $tam .'</td></br> <td><input type="text" size="3" name="prod['.$id.']" value="'.$qtd.'" /></td> <td>R$ '.$preco.'</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>'; } ?> </tbody> </form> </table> </div> </body> </html>  
    • By Nyl Guedes
      Olá! algum filho de Deus poderia me dar uma luz!? estou com o código abaixo onde clico em atualizar, onde atualizar a quantidade de produtos alterados no form. No entanto, quando clicado ele me leva para a pagina home, onde ele deveria atualizar na própria pagina carrinho.php. O que acontece? Tenho duvidas, acho que o sistema de rotas possa atrapalhar, ele me retorna isso: http://localhost:8080/carrinho?acao=up mais não atualiza.
      <?php      session_start();     include "functions/product.php";     include "functions/cart.php";     $pdoConnection = include "connection.php";     if(isset($_GET['acao']) && in_array($_GET['acao'], array('add', 'del', 'up'))) {                  if($_GET['acao'] == 'add' && isset($_GET['id']) && preg_match("/^[0-9]+$/", $_GET['id'])){              addCart($_GET['id'], 1);                     }         if($_GET['acao'] == 'del' && isset($_GET['id']) && preg_match("/^[0-9]+$/", $_GET['id'])){              deleteCart($_GET['id']);         }         if($_GET['acao'] == 'up'){              if(isset($_POST['prod']) && is_array($_POST['prod'])){                  foreach($_POST['prod'] as $id => $qtd){                         updateCart($id, $qtd);                 }             }         }          header('location: /carrinho');     }     $resultsCarts = getContentCart($pdoConnection);     $totalCarts  = getTotalCart($pdoConnection); ?> <!DOCTYPE html> <html lang="en"> <head>          <meta charset="UTF-8">     <title>Document</title>     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" />     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css", > </head> <body>     <div class="container">         <div class="card mt-5">              <div class="card-body">                 <h4 class="card-title">ORÇAMENTO</h4>                 <div></div>             </div>         </div> <br>         <!--INICIO TOTAL DE PRODUTOS SELECIONADOS--> <?php if(!empty($_SESSION['carrinho'])){ $total = 0; print "<div class='btn-group' style='float:left'> <button  class='btn btn-secondary-light btn-sm' disabled><span class='fa fa-shopping-basket'></span></button> <button class='btn btn-secondary-light btn-sm' disabled> Total de itens selecionados: </button> <button  class='btn btn-secondary-light btn-sm' disabled><b>(" . count($_SESSION['carrinho']) . ")</b></button> </div>"; foreach($_SESSION['carrinho'] as $item => $detalhes){ //print $result['name'] . " x " . $result['quantity'] . $result['descricao'] ."<br>"; //$total += $result['quantity'] * $result['price']; } //print "<strong>total: </strong>" . number_format($totalCarts, 2); } else { print " <center><br> <div class='alert alert-danger' role='alert' style='padding-bottom:0px;padding-top:0px;width:600px'> Orçamento ainda não tem produtos adicionados! <br>  Adicione produtos clicando <a href='/home'> Aqui</a> </div> </center>"; } ?> <!--FIM TOTAL DE PRODUTOS SELECIONADOS-->         <?php if($resultsCarts) : ?>                          <table class="table table-sm table-strip">                 <thead>                     <tr>                         <th>Imagem</th>                         <th>Produto</th>                         <th>Quantidade</th>                         <th>Preço</th>                         <th>Subtotal</th>                         <th>Ação</th>                     </tr>                                 </thead>                 <tbody>                  <form action="/carrinho?acao=up" name="up" id="up" method="post">                   <?php foreach($resultsCarts as $result) : ?>                     <tr>                                                  <td><img class="img-thumbnail" src="/img/<?php echo $result['imagem']?>" style="width: 40px;height: 40px"></td>                         <td><?php echo $result['nome']?></td>                         <td>                             <input type="text" class="form-control form-control-sm col-6" name="prod[<?php echo $result['id']?>]" value="<?php echo $result['quantity']?>" size="1" />                                                                          </td>                         <td>R$<?php echo number_format($result['valor'], 2, ',', '.')?></td>                         <td>R$<?php echo number_format($result['subtotal'], 2, ',', '.')?></td>                                                  <td>                         <div class="btn-group" role="group" aria-label="Basic example" style="float: right;">                         <button type="button" class="btn btn-secondary btn-sm" disabled="disabled"><span class="fa fa-trash"></span></button>                         <button type="button" class="btn btn-danger btn-sm" style="float: right;"><a href="carrinho.php?acao=del&id=<?php echo $result['id']?>" style="color:white"> Remover</a></button>                         </div>                          </td>                     </tr>                 <?php endforeach;?>                  <tr>                      <td></td>                      <td colspan="3" class="text-right"><b>Total: </b></td>                      <td>R$<?php echo number_format($totalCarts, 2, ',', '.')?></td>                      <td></td>                  </tr>                 </tbody>                              </table>             <div class="bg-danger " style="width: 100%;height: 1px; background-color: red"></div><br>             <a class="btn btn-info btn-sm" href="/home">Continuar Adicionando</a>             <button class="btn btn-primary btn-sm" type="submit">Atualizar</button>             </form>     <?php endif?>              </div>      </body> </html>  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.