0

Carrinho de compras utilizando array e sessão

criado por Júlio César Martini em 24/05/2004 11:33am
Sistema de carrinho de compras utilizando arrays e sessões.
Não usa banco de dados.
Para ver o documentário do script, acesse:
http://www.imasters.com.br/web/conteudo/coluna_php.php?codcoluna=2162
Data Autor Changelog Download
24/05/2004 11:33am Júlio César Martini - Versão 1.0
23/07/2007 9:09am Carlos Silva Jr Versão 1.0 Versão 1.0

Comentários:

Mostrando 1 - 10 de 14 comentários
Danilo disse:
Boa noite eu terminei um site de vendas baseado nesse carrinho de compras ficou uma maravilha, só que eu fiz com o Register_globals On, e quando coloquei ele para Off, não da para alterar a quantidades e nem excluir o produto, to dando uma estudada e parece que tenho que usar o $_request mas nao to conseguindo adaptar ao codigo. alguém pode me ajudar com este problema ? obrigado pela atenção.
20/07/2010 9:33pm (~13 anos atrás)

Olá pessoal, o unico valores corretos q estão passando para o carrinho é o da quantidade pq os demais esta passando os valores do primeiro produto cadastrado. alguém saberia o pq?
30/07/2007 4:48am (~16 anos atrás)

Estou usando o EasyPHP 1.8 com php4 e ta dando erro nas variaveis...Notice: Use of undefined constant QTDE - assumed 'QTDE' in c:\www\ecomerce\carrinho.php on line 83
ja aconteceu com vcs
23/07/2007 10:36am (~17 anos atrás)

Ai galera comecei a fazer uma loja virtual orientado a objeto o codigo ficou muito legal simples de ler.
já tem o carrinho de comprss funcionado cadastro de produtos, cadastro de usuarios, e ja efetua pedidos so falta trasformar esses pedidos em compra e finalizar com a forma de pagamento.

Quem tiver interesse em me ajudar esteja entrando em contato comigo pelo email arnobio4@gmail.com ,
esse é o endereço http://www.emfocoweb.com/administracao/decore acesse e de uma olhada o layout está feinho, mas o que importa é o fucionamento depois quem qiser fazer um layout bem bacana e o dmenos.
25/03/2007 10:34am (~17 anos atrás)

Julio Cesar, parabéns pelo teu script "carrinho", eu como não sou chegado a banco de dados, pois sou iniciante em php, é tudo o que eu estou precisando, (Loja Virtual s/ banco de dados), não consegui acertar um erro que ele tem ao somar os valores de fechamento "finalizar.php", no Subtotal, e em Total a pagar.
Ex: No carrinho, o valor é: 53,00 e no "Total a Pagar" apresenta 50,00.
Por favor, alguém pode me ajudar?!
28/05/2006 12:57pm (~18 anos atrás)

apesar de não dar erro algum , este email não chega.

//EMAIL DO ADMINISTRADOR QUE VAI RECEBER O PEDIDO
$email_dest = "bandacreation@ig.com.br";

preciso configurar algo no php.ini ?
acho que não né?
se puderem ajudar...
09/11/2005 10:17pm (~18 anos atrás)

rogerioacai disse:
Preciso saber como faço para consultar os dados de uma tabela para mostrar neste exemplo de carrinho de compras.
18/09/2005 8:53pm (~18 anos atrás)

Como fazer para que quando clicar no icone carrinho aparecer uma mensagen (adiconar ao carrinho) e não abrir a pagina do carrinho de compras e o produto ser adicionado
Se alguem sober me ajude por favor
30/08/2005 5:45am (~18 anos atrás)

Muito bom msm!!!!simples e funcional.....Parabéns
16/08/2005 11:11am (~18 anos atrás)

Galera olha soh, eu tb queria ver isso funcionando com banco de dados aprimorei ele mas ele me mostra apenas o ultimo registro independente de qual produto eu escolho, abaixo vou mandar os codigos se alguem puder me ajudar preciso mto mto disso....

Att
Alan Juliano Metzger

Arquivos do Carrinho...
Index.PHP

<?
//INICIALIZA A SESSÃO
session_start();

//MONTA O ARRAY DE PRODUTOS
include "connect.php";
$sql = mysql_query("SELECT * from produto");

//TOTAL DE PRODUTOS POR LINHA
$total = 2;
?>
<html>
<head>
</head>
<body>
<form action="carrinho.php" method="post" name"frmcarrinho">
<input type="hidden" name="opc_efetivar" value="1">
<table width="100%" height="287" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td height="287" align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center">Carrinho de Compras Utilizando Session e Banco de Dados.</td>
</tr>
</table>
<p>&nbsp;</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>Confira os Produtos do nosso Site </td>
</tr>
</table>
<p>&nbsp;</p>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<? while ($produto=mysql_fetch_array($sql))
{
$_SESSION['codigo'] = $produto['codigo'];
$_SESSION['artista'] = $produto['artista'];
$_SESSION['album'] = $produto['album'];
$_SESSION['preco'] = $produto['preco'];
$_SESSION['imagem'] = $produto['imagem'];

//VERIFICA
if($total == $atual)
{
echo "</tr><tr>";
$atual = 0;
}
?>
<tr>
<td width="13%" height="104" align="left" valign="top">
<img src="<? echo $produto['imagem']; ?>" width="80" height="80" border="1" align="left"> <font face='Arial' size='2'>&nbsp;</font></td>
<td width="87%" align="left" valign="top"><font face='Arial' size='2'>
<? echo $produto['artista']; ?><br>
<? echo $produto['album']; ?> <br>
R$ <? echo $produto['preco']; ?><br>
<input type="hidden" name="txtprod[<? echo $_SESSION['codigo'];?>" value="<? echo $res['codigo']; ?>">
<input type="hidden" name="txtprod[<? echo $_SESSION['artista'];?>" value="<? echo $res['artista']; ?>">
<input type="hidden" name="txtprod[<? echo $_SESSION['album'];?>" value="<? echo $res['album']; ?>">
<input type="hidden" name="txtprod[<? echo $_SESSION['preco'];?>" value="<? echo $res['preco']; ?>">
<input type="text" name="txtprod[<? echo $indice;?>][QTDE]" size="3" maxlength="3">
<input type="image" src="carrinho.gif" onClick="javascript: document.forms[0].submit();">
</font>
</td>
</tr>
<?
//SOMA 1 A VARIÁVEL CONTROLADORA
$atual++;
} //FECHA WHILE ?>
</table></td>
</tr>
</table>
</form>
</body>
</html>

E agora o carrinho.php

<?

//INICIALIZA A SESSÃO
session_start();

//VERIFICA SE TEM PRODUTO NO CARRINHO PARA PUXAR
if(count($_SESSION[cesta]) > 0) {

//PEGA A CHAVE DO ARRAY
$chave = array_keys($_SESSION[cesta]);

//PEGA OS DADOS DA SESSÃO
for($i=0; $i<sizeof($chave); $i++) {
//ÍNDICE
$indice = $chave[$i];

//ATRIBUI
$cesta[$indice][ARTISTA] = $_SESSION['artista'];
$cesta[$indice][ALBUM] = $_SESSION['album'];
$cesta[$indice][PRECO] = $_SESSION['preco'];
$cesta[$indice][QTDE] = $_SESSION[cesta][$indice][QTDE];
}//FECHA FOR
}//FECHA IF



//VERIFICA SE A OPÇÃO ATUALIZAR FOI SELECIONADA
if($_POST[opc_atualizar]) {

//RECEBE OS PRODUTOS CHECADOS PARA ATUALIZAÇÃO
$v_atualiza = $_POST[a_prod];

//PEGA A CHAVE DO ARRAY
$chave = array_keys($v_atualiza);

//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
//PEGA O INDICE DO PRODUTO
$indice = $chave[$i];

//ALTERA A QUANTIDADE DO PRODUTO SELECIONADO
$_SESSION[cesta][$indice][QTDE] = $v_atualiza[$indice][QTDE];
}//FECHA FOR
}//FECHA IF


//VERIFICA SE A OPÇÃO EXCLUIR FOI SELECIONADA
elseif($_POST[opc_excluir]) {

//RECEBE OS PRODUTOS CHECADOS PARA EXCLUSÃO
$excluir = $_POST[check];

//EXIBE
for($i=0; $i<sizeof($excluir); $i++) {
//PEGA O INDICE DO PRODUTO
$indice = $excluir[$i];
//DESTRÓI A VARIÁVEL ESPECIFICADA
unset($_SESSION[cesta][$indice]);
}//FECHA FOR
}//FECHA IF



//RECEBE O PEDIDO DO USUÁRIO
elseif($_POST[opc_efetivar]) {
//RECEBE AS VARIÁVEIS
$v_prod = $_POST[txtprod];

//PEGA A CHAVE DO ARRAY
$chave = array_keys($v_prod);

//EXIBE
for($i=0; $i<sizeof($chave); $i++) {
$indice = $chave[$i];

//VERIFICA
if(!empty($v_prod[$indice][QTDE]) ) {

//GRAVA NO ARRAY CESTA
$cesta[$indice][ARTISTA] = $v_prod[$_SESSION['artista']];
$cesta[$indice][ALBUM] = $v_prod[$_SESSION['album']];
$cesta[$indice][PRECO] = $v_prod[$_SESSION['preco']];
$cesta[$indice][QTDE] = $v_prod[$indice][QTDE];
}//FECHA IF
}//FECHA FOR

//GRAVA NA SESSÃO
$_SESSION[cesta] = $cesta;
}//FECHA ELSE
?>

<html>
<head>
<title></title>
<script language="JavaScript">
<!--
function enviar(opcao) {
//OPÇÃO EXCLUIR SELECIONADA
if(opcao == 'E') {
document.forms[0].opc_excluir.value = 1;
document.forms[0].submit();
}//FECHA IF

//OPÇÃO ATUALIZAR SELECIONADA
if(opcao == 'A') {
document.forms[0].opc_atualizar.value = 1;
document.forms[0].submit();
}//FECHA IF

//OPÇÃO FINALIZAR SELECIONADA
if(opcao == 'F') {
document.forms[0].opc_finalizar.value = 1;
document.forms[0].action = "finalizar.php";
document.forms[0].submit();
}//FECHA IF

}//FECHA FUNCTION
//-->
</script>

</head>

<body>
<table width="773" border="0" cellspacing="0" cellpadding="0">
<tr>
<td><br>
<br>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align='center'><font face='Arial' size='4'>Carrinho de compras utilizando arrays e session</font></td>
</tr>
</table>
<br>
<br>
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td><font size="2" face="Arial">Carrinho de Compras: </font></td>
</tr>
</table>

<?
//EXIBE O CARRINHO SE TIVER PRODUTOS
if(count($_SESSION[cesta]) > 0) { ?>

<form name="frmCarrinho" method="post">
<input type="hidden" name="opc_excluir">
<input type="hidden" name="opc_atualizar">
<input type="hidden" name="opc_finalizar">
<table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr bgcolor="#CCCCCC">
<td width="4%">&nbsp;</td>
<td width="8%"><span class="style2">Qtde</span></td>
<td width="51%"><span class="style2">Produto</span></td>
<td width="19%"><span class="style2">Valor</span></td>
<td width="18%"><span class="style2">Subtotal</span></td>
</tr>
<?
//PEGA A CHAVE
$chave_cesta = @array_keys($_SESSION[cesta]);

//EXIBE OS PRODUTOS DA CESTA
for($i=0; $i<sizeof($chave_cesta); $i++) {
$indice = $chave_cesta[$i];

//SUBTOTAIS DE CADA PRODUTO
$subtotal = $_SESSION[cesta][$indice][QTDE] * ereg_replace(",",".",$_SESSION['preco']);

//TOTAL GERAL
$total += $subtotal;
?>
<tr>
<td height="25"><input name="check[]" type="checkbox" value="<? echo $indice; ?>"></td>
<td height="25"><font face='Arial' size='2'>
<input type="text" name="a_prod[<? echo $indice; ?>][QTDE]" value="<? echo $_SESSION[cesta][$indice][QTDE]; ?>" size="3"></font></td>
<td height="25"><font face='Arial' size='2'><? echo $_SESSION['artista']; ?> - <? echo $_SESSION['album']; ?></font></td>
<td height="25"><font face='Arial' size='2'>R$ <? echo $_SESSION['preco']; ?></font></td>
<td width="18%" height="25"><font face='Arial' size='2'> R$ <? echo number_format($subtotal,2,',','.'); ?></font></td>
</tr>
<?
}//FECHA FOR ?>
<tr>
<td height="25" colspan="3">
<input type="image" name="btnExcluir" src="excluir.gif" onClick="enviar('E');">&nbsp;&nbsp;
<input type="image" name="btnAtualiza" src="atualizar.gif" onClick="enviar('A');"></td>
<td height="25" bgcolor="#FF0000"><span class="style5">&nbsp;&nbsp;Total &agrave; pagar: </span></td>
<td height="25" bgcolor="#FFF0F0" class="style2"> &nbsp;&nbsp;R$&nbsp;<? echo number_format($total,2,',','.'); ?></td>
</tr>
<tr>
<td height="25" colspan="3">&nbsp;</td>
<td height="40" colspan="2"><div align="center">
<input type="image" name="btnFinaliza" src="finaliza.gif" onClick="enviar('F');"></div></td>
</tr>
</table>
</form>
<?
}//FECHA IF(count)
else { ?><br><br><br>
<table width="90%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align='center'><font face='Arial' size='2' color="#006666">Desculpe, mas no momento você não possui nenhumm produto.</td>
</tr>
</table><br><br>
<?
}//FECHA ELSE (count)?>
<table width="70%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td align='center'><font face='Arial' size='2'><a href="index1.php">&lt;&lt; Voltar </a></font></td>
</tr>
</table>
<br>
</td>
</tr>
</table>
</body>
</html>

Se alguem puder me ajudar...
ele usa uma table chamada produto que tem os mesmos campos que ele mostra, o nome do banco eh compras e o da table produto e tem os campos id, codigo, artista, album, preco, imagem.
16/05/2005 3:09pm (~19 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)