Jump to content

Recommended Posts

Olá,

Fiz um código p/ carrinho de compras utilizando php (odbc) e firebird mas estou com problemas na hora de deletar o item adicionado ao carrinho.

Na minha página do carrinho de compras preciso de um botão para deletar esse item, porém ele exclui sempre o ultimo item adicionado, mesmo eu clicando no botão do primeiro item, quem é deletado é o ultimo sempre.

meu código está um pouco extenso então tentarei fazer um resumo.

Eu faço o select no banco de dados, trazendo todos os detalhes dos produtos que estão dentro daquele carrinho, então exibo eles através de um While, como eu não sei manipular outras linguagem fora php, html e css, fiz uma gambiarra.... cada botão pertence a um form, e através do while é repetido a cada item, e para deletar o item do carrinho eu puxo um o ID do produto e o ID da lista, e armazeno eles dentro de uma $_SESSION["ID_PRODUTO"] e $_SESSION["ID_LISTA"], e através do formulário eu faço um post na página onde está o seguinte código:

 

@session_start();
if (!empty($_SESSION["ID_LISTA"]) && !empty($_SESSION["ID_LISTA"])) {
$ID_LISTA = $_SESSION["ID_LISTA"];
$ID_ITEM = $_SESSION["ID_ITEM"];
$query = "DELETE FROM TBL_CARRINHO_ITEM WHERE ID_ITEM=".$ID_ITEM." AND ID_LISTA=".$ID_LISTA;
$result = odbc_exec($conn, $query);
..........
eu sei que o problema está na minha session, por causa do While sempre está recebendo um novo valor, mas tem como eu pegar o valor de cada ID_LISTA e ID_PRODUTO sem que sejam substituído pelo proximo por causa do while?
________
o meu código é basicamente:
select = "dados do banco";
while (odbc_fetch_row($result)){
<listview>
exibe os dados
<form>
btn-excluir
</form>
<listview>
}

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 brunoatratrus
      Bom dia!
      Sou iniciante em JavaScript e estou quebrando a cabeça pra resolver um problema, vê se vocês podem me ajudar.
      O projeto consiste em um sistema de vendas online bem simples, por isso não utilizei nenhuma plataforma.
       
      O código abaixo é o script que adiciona produtos no carrinho sem dar refresh:
      $(document).ready(function(){ $("#addcarrinhoajax").click(function(){ var envio = $.get("add_carrinho.php", { idproduto: $("#idproduto").val(), }) envio.done(function(data) { // AQUI É QUE ESTÁ O PROBLEMA }) envio.fail(function() { alert("Erro na requisição"); }) }); }); Esse é o código add_carrinho.php:
      <?php session_start(); require_once 'admin/conexao.php'; $idproduto = $_GET['idproduto']; if(!isset($_SESSION['itens'][$idproduto])) { $_SESSION['itens'][$idproduto] = 1; }else{ $_SESSION['itens'][$idproduto] += 1; } ?> Aqui vem uma parte do código onde lista os produtos, a parte onde tem o form com o botão para adicionar produto:
      <form action="" method="GET"> <input type="hidden" id="idproduto" name="idproduto" value="<?php echo $item['id']; ?>"> <img src="img/carrinho.png"> <button type="button" id="addcarrinhoajax"> Add</button> </form> Código do carrinho, onde só aparece o preço total. O carrinho fica numa DIV fixa na lateral.
      <div class="preco"> <?php if(count($_SESSION['itens']) == 0) { echo "Carrinho Vazio"; }else { echo 'R$ ' . number_format($somaCarrinho, 2, ',', '.'); } ?> </div> A questão é a seguinte: Toda vez que clico no botão para adicionar, ele adiciona mas não muda o valor! Preciso atualizar a página pra vê o valor total no carrinho.
      Como faço pra quando apertar o botão de add, atualizar junto o preço do carrinho dinamicamente?
    • 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 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>  
×

Important Information

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