Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Pienkovski

[Resolvido] como fechar carrinho de compras?

Recommended Posts

Amigos,

Montei um carrinho de compras que funciona muito bem, só que eu não estou conseguindo faze-lo ficar vazio.

O código básico do carrinho vai a seguir. Eu coloquei lá embaixo um if para destruir a seção, mas não está funcionando.

Se vocês quiserem ver como ele está no site é só entrar aqui: http://www.dolgabraga.com/projeto_index.php

A pergunta é: como eu faço para que o carrinho fique vazio assim que o cliente fechar a compra, e, se ele quiser comprar mais, uma nova sessão seja iniciada.

Muito obrigado!

 

<?php

// Iniciamos nossa sessão que vai indicar o usuário pela session_id

ob_start();

session_start();

include "conn.php";

// Recuperamos os valores passados por parametros

$acao =isset($_GET['acao'])?$_GET['acao']:FALSE;

$cod =isset($_GET['cod'])?$_GET['cod']:FALSE;

 

 

// Verificamos se a acao é igual a incluir

if ($acao == "incluir")

{

// Verificamos se cod do produto é diferente de vazio

if ($cod != '')

{

// Se for diferente de vazio verificamos se é numérico

if (is_numeric($cod))

{

// Tratamos a variavel de caracteres indevidos

$cod = addslashes(htmlentities($cod));

 

// Verificamos se o produto referente ao $cod já está no carrinho para o session id correnpondente

$query_rs_carrinho = "SELECT * FROM tbl_carrinho WHERE tbl_carrinho.cod = '".$cod."' AND tbl_carrinho.sessao = '".session_id()."'";

$rs_carrinho = mysql_query($query_rs_carrinho, $conec) or die(mysql_error());

$row_rs_carrinho = mysql_fetch_assoc($rs_carrinho);

$totalRows_rs_carrinho = mysql_num_rows($rs_carrinho);

 

// Se o total for igual a zero é sinal que o produto ainda não está no carrinho

if ($totalRows_rs_carrinho == 0)

{

// Aqui pegamos os dados do produto a ser incluido no carrinho

$query_rs_produto = "select * from tbl_produtos where cod = '".$cod."'";

$rs_produto = mysql_query($query_rs_produto, $conec) or die(mysql_error());

$row_rs_produto = mysql_fetch_assoc($rs_produto);

$totalRows_rs_produto = mysql_num_rows($rs_produto);

 

// Se total for maior que zero esse produto existe e então podemos incluir no carrinho

if ($totalRows_rs_produto > 0)

{

$registro_produto = mysql_fetch_assoc($rs_produto);

// Incluimos o produto selecionado no carrinho de compras

$add_sql = "INSERT INTO tbl_carrinho (id, cod, nome, preco, qtd, sessao)

VALUES

('','".$row_rs_produto['cod']."','".$row_rs_produto['nome']."','".$row_rs_produto['preco']."','1','".session_id()."')";

$rs_produto_add = mysql_query($add_sql, $conec) or die(mysql_error());

}

}

}

}

}

 

// Verificamos se a acao é igual a excluir

if ($acao == "excluir")

{

// Verificamos se cod do produto é diferente de vazio

if ($cod != '')

{

// Se for diferente de vazio verificamos se é numérico

if (is_numeric($cod))

{

// Tratamos a variavel de caracteres indevidos

$cod = addslashes(htmlentities($cod));

// Verificamos se o produto referente ao $cod está no carrinho para o session id correnpondente

$query_rs_car = "SELECT * FROM tbl_carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'";

$rs_car = mysql_query($query_rs_car, $conec) or die(mysql_error());

$row_rs_carrinho = mysql_fetch_assoc($rs_car);

$totalRows_rs_car = mysql_num_rows($rs_car);

 

// Se encontrarmos o registro, excluimos do carrinho

if ($totalRows_rs_car > 0)

{

$sql_carrinho_excluir = "DELETE FROM tbl_carrinho WHERE cod = '".$cod."' AND sessao = '".session_id()."'";

$exec_carrinho_excluir = mysql_query($sql_carrinho_excluir, $conec) or die(mysql_error());

}

}

}

}

 

// Verificamos se a ação é de modificar a quantidade do produto

if ($acao == "modifica")

{

$quant = $_POST['qtd'];

// Se for diferente de vazio verificamos se é numérico

if (is_array($quant))

{

// Aqui percorremos o nosso array

foreach($quant as $cod => $qtd)

{

// Verificamos se os valores são do tipo numeric

if(is_numeric($cod) && is_numeric($qtd))

{

// Fazemos nosso update nas quantidades dos produtos

$sql_modifica = "UPDATE tbl_carrinho SET qtd = '$qtd' WHERE cod = '$cod' AND sessao = '".session_id()."'";

$rs_modifica = mysql_query($sql_modifica, $conec) or die(mysql_error());

}

}

}

 

}

?>

<!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>Carrinho de Compras</title>

<style type="text/css">

<!--

.style3 {font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; }

.style4 {

color: #FF0000;

font-weight: bold;

}

-->

</style>

</head>

 

<body>

<div align="center"><img src="carrinho.jpg" width="589" height="102" />

</div>

<form action="carrinho.php?acao=modifica" method="post">

<table width="100%" border="1" cellspacing="0" cellpadding="0">

<tr>

<th width="36%" scope="col"><div align="left">PRODUTO</div></th>

<th width="22%" scope="col">PREÇO</th>

<th width="13%" scope="col">QUANTIDADE</th>

<th width="14%" scope="col">SUBTOTAL</th>

<th width="15%" scope="col"> </th>

</tr>

 

<?

$sql_meu_carrinho = "SELECT * FROM tbl_carrinho WHERE sessao = '".session_id()."' ORDER BY nome ASC";

$exec_meu_carrinho = mysql_query($sql_meu_carrinho, $conec) or die(mysql_error());

$qtd_meu_carrinho = mysql_num_rows($exec_meu_carrinho);

 

if ($qtd_meu_carrinho > 0)

{

$soma_carrinho = 0;

while ($row_rs_produto_carrinho = mysql_fetch_assoc($exec_meu_carrinho))

{

$soma_carrinho += ($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd']);

?>

<tr>

 

<td><span class="style3">

<?=$row_rs_produto_carrinho['nome']?>

</span></td>

<td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco'],2,",","."); ?></div></td>

<td><div align="center" class="style3"><input type"text" size="2" name="qtd[<?=$row_rs_produto_carrinho['cod']?>]" value="<?=$row_rs_produto_carrinho['qtd']?>" /></div></td>

<td><div align="center" class="style3"><?= number_format($row_rs_produto_carrinho['preco']*$row_rs_produto_carrinho['qtd'],2,",","."); ?></div></td>

<td><div align="center"><a href="carrinho.php?cod=<?=$row_rs_produto_carrinho['cod']?>&acao=excluir"><img src="del_carrinho.jpg" width="110" height="21" border="0" /></a></div></td>

</tr>

<?

}

}

?>

<tr>

<td colspan="3"><div align="right"><strong>TOTAL:</strong>  </div> <div align="right"></div> <div align="right"></div></td>

<td><div align="center" class="style3 style4">

<?= number_format($soma_carrinho,2,",",".");?></div></td>

<td> </td>

</tr>

<tr>

<td colspan="5"><table width="100%" border="0" cellspacing="0" cellpadding="0">

<tr>

<th width="33%" height="60" scope="col"><span class="style3"><a href="produtos.php"><img src="comprando.jpg" width="287" height="40" border="0" /></a></span></th>

<th width="33%" scope="col"> </th>

<th width="34%" scope="col"><label>

<input type="image" name="imageField" src="atualizar.jpg" />

</label></th>

</tr>

</table></td>

</tr>

</table>

</form>

<?

echo "<table border='1' width='100%'>";

echo " <tr align='center'>";

echo " <td><a href='carrinho.php?acao=fechar'><img src='pagar.jpg' width='202' height='40' border='0'></a></td>";

echo " </tr>";

echo "</table>";

if ($acao == "fechar"){

 

session_unset();

session_destroy();

header("Location:produtos.php");

}

?>

</body>

</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente,

 

já sei como a gente faz:

em vez de usar session_destroy() usa-se session_regenerate_id();

Porque esse carrinho "trabalha" com a session_id.

 

Sabem quem me ensinou isso? Deus. Nosso bom e maravilhoso Deus me ensinou.

Tem gente que acha que é sorte, mas eu estou certo de que foi Deus!

 

Obrigado e um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.