Ir para conteúdo

Arquivado

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

Kelven

Id carrinho de compras

Recommended Posts

E ai galera beleza,

pessoal to com dúvida agora é sobre o carrinho de compras,

como é que é tipo,

eu vou usar cookie nele, mas o cookie vai salvar a id do carrinho certo,

mas tipo a id tem que ser uma id que eu vou pegar de onde?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi, explique melhor.

Existem muitas maneiras de se construir um carrinho de compras de loja virtual. O mais fácil seria sem precisar de banco de dados, por exemplo:

 

Cada produto que entra para o carrinho é adicionado numa variável de sessão.

Por exemplo:

 

$_SESSION['produtos'] = 1,2,5,10,11;

 

Daí eu leio, explodo a variavel, e faço um while desses produtos, exibindo seus dados.

No mesmo raciocínio dá pra criar quantidades, e outras informações.

 

Com BD também é possivel. Basta verificar se já existe um carrinho com o ID do usuário, e se existir, apenas atualizar. Se não existir, criar. Deve-se utilizar INSERT e UPDATE nesses dois processos.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oO, valeu de novo cara,

vou fazer sem banco de dados então é melhor,

obrigado mesmo,

 

Só que eu vou usar cookie, como é que eu mostraria tudo com while usando o cookie ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

e como eu posso salvar varias informações no mesmo cookie?

 

Olha só eu fiz uma pagina para gerar o cookie:

<?php
$id_produto = $_GET["id"];

if ($id_produto != "")
{
setcookie("id_produto",$id_produto);
header("location: carrinho_decompras.php");
}

else 
{
	echo "foi detectado um erro no script por favor retorne e tente novamente, caso não consiga, comunique-nos";
	echo "<a href='index.php'>Voltar</a>";
	}
?>

 

E na outra pagina eu mostrei o cookie:

 

<?php 
$id_produtos = $_COOKIE["id_produto"];
$sql = "SELECT * FROM produtos WHERE id_produto = '$id_produtos'";
$query = mysql_query($sql) or die ("houve um erro no script");

?>

</td>
    <td width="195" style="text-align:center"><strong>Produto</strong></td>
    <td width="138" style="text-align:center"><strong>Quantidade</strong></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
    <td width="120" rowspan="4" style="text-align:center"> propaganda </td>
  </tr>
  <?php while($resultado = mysql_fetch_array($query))
  
  {?>
  
  <tr>
    <td style="text-align:center"><?php echo $resultado[nome]; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  
  <?php }?>

só que ele substitui, eu não sei como fazer para ele somar e não salvar por cima o cookie.

Compartilhar este post


Link para o post
Compartilhar em outros sites

colocando assim então pode dar certo olha:

<?php
$id_produto = $_GET["id"];

if ($id_produto != "")
{
$_COOKIE["id_produto"] .= ','.$variavel;
setcookie("id_produto",$id_produto);
header("location: carrinho_decompras.php");
}

else 
{
	echo "foi detectado um erro no script por favor retorne e tente novamente, caso não consiga, comunique-nos";
	echo "<a href='index.php'>Voltar</a>";
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso, substitua $variavel por $id_produto, né?! ^_^

 

Troque essas linhas:

 

$id_produto = $_GET["id"];

if ($id_produto != "")

Por isso:

 

$id_produto = (int)$_GET['id'];
if ($id_produto>0)

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu fiz e não funcionou não olha só como eu fiz,

a parte de colocar no cookie,

<?php
$id_produto = $_GET["id"];

if ($id_produto != "")
{
$_COOKIE["id_produto"] .= ','.$id_produto;
setcookie("id_produto",$id_produto);
header("location: carrinho_decompras.php");
}

else 
{
	echo "foi detectado um erro no script por favor retorne e tente novamente, caso não consiga, comunique-nos";
	echo "<a href='index.php'>Voltar</a>";
	}
?>

e a parte de aparecer no cookie:

 

<?php 
$id_produtos =','. $_COOKIE["id_produto"];
$sql = "SELECT * FROM produtos WHERE id_produto = '$id_produtos'";
$query = mysql_query($sql) or die ("houve um erro no script");

?>

</td>
    <td width="195" style="text-align:center"><strong>Produto</strong></td>
    <td width="138" style="text-align:center"><strong>Quantidade</strong></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
    <td width="120" rowspan="4" style="text-align:center"> propaganda </td>
  </tr>
  <?php while($resultado = mysql_fetch_array($query))
  
  {?>
  
  <tr>
    <td style="text-align:center"><?php echo $resultado[nome]; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  
  <?php }?>

Ele continua substituindo, mas ele mostra é com uma virgula antes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Leia com calma e atenção seu código antes de sair correndo pra pedir ajuda.

 

Retire daí:

setcookie("id_produto",$id_produto);

 

E outra. você nunca vai achar um id_produto na sua tabela com virgulas e mais virgulas.

 

Você precisa utilizar explode e uma função de loop.

 

Tente fazer, estou saindo, mas amanhã volto para ver se conseguiu.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não consegui aqui não, você pode fazer um exemplo usando o arquivo ai em cima?

<?php
$id_produto = $_GET["id"];

if ($id_produto != "")
{
setcookie("id_produto",$id_produto);
header("location: carrinho_decompras.php");
}

else 
{
        echo "foi detectado um erro no script por favor retorne e tente novamente, caso não consiga, comunique-nos";
        echo "<a href='index.php'>Voltar</a>";
        }
?>

E a parte que tem que aparecer os produtos no carrinho de compras

 

<?php 
$id_produtos = $_COOKIE["id_produto"];
$sql = "SELECT * FROM produtos WHERE id_produto = '$id_produtos'";
$query = mysql_query($sql) or die ("houve um erro no script");

?>

</td>
    <td width="195" style="text-align:center"><strong>Produto</strong></td>
    <td width="138" style="text-align:center"><strong>Quantidade</strong></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
    <td width="120" rowspan="4" style="text-align:center"> propaganda </td>
  </tr>
  <?php while($resultado = mysql_fetch_array($query))
  
  {?>
  
  <tr>
    <td style="text-align:center"><?php echo $resultado[nome]; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  
  <?php }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

<?php
$id_produto = (int)$_GET['id'];
if ($id_produto > 0) {
	if (isset($_COOKIE['id_produto'])) {
		$_COOKIE['id_produto'] .= ','.$id_produto;
	} else {
		setcookie('id_produto', $id_produto);
	}
	header('Location: carrinho_decompras.php');
} else {
	echo 'Foi detectado um erro no script. Por favor, retorne e tente novamente, caso não consiga, comunique-nos';
	echo '<a href="index.php">Voltar</a>';
}
?>

<?php 
$id_produtos = isset($_COOKIE['id_produto']) ? $_COOKIE['id_produto'] : FALSE;
if ($_COOKIE['id_produto']) {
	$id_separa = explode(',',$_COOKIE['id_produto']);
	foreach ($id_separa as $id) {
		$res = mysql_query('SELECT * FROM `produtos` WHERE `id_produto`='.$id);
		while ($x = mysql_fetch_assoc($res)) {
			echo '<pre>';
			print_r($x);
			echo '</pre><br /><br /><br />'; //Ex: echo $x['xxxxx']
		}
	}
}
?>

</td>
    <td width="195" style="text-align:center"><strong>Produto</strong></td>
    <td width="138" style="text-align:center"><strong>Quantidade</strong></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
    <td width="120" rowspan="4" style="text-align:center"> propaganda </td>
  </tr>

  
  <tr>
    <td style="text-align:center"><?php echo $resultado['nome']; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  

Inté!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora aconteceu uma coisa que eu não entendi,

veja o que mostrou:

 

Array

(

[id_produto] => 4

[id_categoria] => 1

[id_subcategoria] => 1

[codigo_produto] => 12316542

[nome] => Maionese

[detalhes_pequeno] => Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese

[detalhes_grande] => Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese

[quantidade] => 1322

[foto] => Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese Maionese

)

 

mas quando eu tentava adicionar outro produto ao carrinho ele mostrava os mesmos valores.

isso é porque o cookie ja foi setado não é?

ele deve mesmo mostrar esse valores mesmo que eu adicione outro produto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele deve mostrar os valores de todos os produtos que você adicionou no carrinho.

Se você tem 5 produtos, ele deve gerar um Array para cada um deles, com seus respectivos dados.

 

Antes do explode, dê um echo no COOKIE para ver como estão os dados.

 

Deve ser algo assim: 2,3,6,8...

 

Cada produto separado por vírgula.

 

Para remover um ou outro, é outra história. Primeiro você deve construir a tabela que exibe.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Man eu pedi pra mostrar aqui e o cookie não muda não mesmo que eu adicione outro produto, olha so como é que eu pedi pra mostrar:

$id_produtos = isset($_COOKIE['id_produto']) ? $_COOKIE['id_produto'] : FALSE;
if ($_COOKIE['id_produto']) {
        $id_separa = explode(',',$_COOKIE['id_produto']);
        foreach ($id_separa as $id) {
                $res = mysql_query('SELECT * FROM `produtos` WHERE `id_produto`='.$id);
                while ($x = mysql_fetch_assoc($res)) {
			echo $id_produtos; //bem aqui eu to mostrando
                        echo '<pre>';
                        print_r($x);
                        echo '</pre><br /><br /><br />'; //Ex: echo $x['xxxxx']

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha o jeito que aparece:

Imagem Postada

 

O que ta gerando é isso aqui olha,

<?php 
$id_produtos = isset($_COOKIE['id_produto']) ? $_COOKIE['id_produto'] : FALSE;
if ($id_produtos)  {
        $id_separa = explode(',',$_COOKIE['id_produto']);
        foreach ($id_separa as $id) {
                $res = mysql_query('SELECT * FROM `produtos` WHERE `id_produto`='.$id);
                while ($x = mysql_fetch_assoc($res)) {
						echo $id_produtos;
                        echo '<pre>';
                        print_r($x);
                        echo '</pre><br /><br /><br />'; //Ex: echo $x['xxxxx']
?>
  
  <tr>
    <td style="text-align:center"><?php echo $x[nome]; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  
  <?php 
                }
        }
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é porque mesmo eu adicionando outro produto ele só aparece isso ai, pois isso são os dados do primeiro produto que eu cliquei.

depois mesmo eu clicando em outro produto ele aparece os mesmos dados,

quer ver vou lhe mostrar como são os produtos, até a parte do carrinho.

produtos:

 

<?php include("conexao.php");


?>
<!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=utf-8" />
<title>Loja virtual</title>
</head>

<body style="margin:auto; font:Verdana, Geneva, sans-serif; font-size:12px;">


<table width="800px" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="3" style="text-align:center; background-color:#000" width="100%">
    <a href="index.php"><?php  include("topo.php");?></a></td>
  </tr>
  <tr>
  
  <!-- Toda a parte do menu em php -->
    <td width="113" style="text-align:left"><div style="position:absolute; left: 16px; top: 232px;"><?php $sql = "SELECT * FROM categoria";
$resultado = mysql_query($sql) or die ("ouve um erro ao mostrar os arquivos, talvez seja erro de banco de dados entre em contato contato@flycratry.com");
while($registro=mysql_fetch_array($resultado))
{
	?>
<a href="index.php?id=<?php echo $registro[id] ?>"><?php echo $registro[categoria];?></a><br />
<?php 
$id_para_subcategoria= $_GET["id"];
if($id_para_subcategoria != "")
{
	
	$sql2 = "SELECT * FROM subcategorias WHERE id_categoria = '$registro[id]'";
	$resultado_subcategorias = mysql_query($sql2) or die ("tem erro no script");
	while($registro2= mysql_fetch_array($resultado_subcategorias))
	{
		
	if ($id_para_subcategoria == $registro2[id_categoria])
	{
	?>
   --<a href="subcategorias.php?id=<?php echo $registro2[id_categoria]; ?>&id_subcategoria=<?php echo $registro2[id_subcategoria]; ?>"><?php echo $registro2[subcategoria]?></a><br />
<?php
	}
	}
	
	}
?>


<?php
}?>
<!-- fim da parte do menu em php -->
</div>
</td>
    <td width="177" style="text-align:center">
    <?php 
	$id_categoria = $_GET["id"];
	$id_categoria_da_subcategoria = $_GET["id_categoria"];
	if ($id_categoria == "" && $id_categoria_da_subcategoria == "")
	{
	?>
    conteudo
    <?php }
	else
	{
		
		/* Parte do produto*/
		$sql3 = "SELECT * FROM produtos WHERE id_categoria = '$id_categoria'";
		$resultado_produtos = mysql_query($sql3) or die ("tem um erro no script");
		echo '<table width="100%" bordercolor="#CCCCCC" border="0" cellspacing="0" cellpadding="0">';
$i = 0;
while($x = mysql_fetch_array($resultado_produtos)) {
        ++$i;
        echo ($i==0) ? '<tr>' : null;
        ?>
    <td align="center">
            <p> </p>
            <p><img src="adfasfasdfasdf" width="100" height="100"  /></p>
            <p><?php echo $x['nome'];?>
            </p>
        <p><a href="detalhes.php?id_produto=<?php echo $x['id_produto'];?>">detalhes</a><br /><br />
        <a href="carrinho.php?acao=add&id=<?php echo $x['id_produto'];?>">Adicionar a carrinho</a></p></td>
        <?php
        if ($i==4) {
                $i = 0;
                echo '</tr>';
        }
}
echo '</table>';
	 }?>
    
    </td>
    <td width="82" rowspan="2" style="text-align:center"> propaganda </td>
  </tr>
  <tr>
    
  </tr>
  <tr>
    <td colspan="3" style="text-align:center">Rodapé</td>
  </tr>
</table>

</body>
</html>

Aparece dessa forma:

Imagem Postada

 

ai a parte de começar o carrinho é essa que ja lhe mostrei:

 

<?php
$id_produto = (int)$_GET['id'];
if ($id_produto > 0) {
        if (isset($_COOKIE['id_produto'])) {
                $_COOKIE['id_produto'] .= ','.$id_produto;
        } else {
                setcookie('id_produto', $id_produto);
        }
        header('Location: carrinho_decompras.php');
} else {
        echo 'Foi detectado um erro no script. Por favor, retorne e tente novamente, caso não consiga, comunique-nos';
        echo '<a href="index.php">Voltar</a>';
}
?>

E aqui é o carrinho pra aparecer:

 

<?php include("conexao.php");



?>
<!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=utf-8" />
<title>Loja virtual</title>
</head>

<body style="margin:auto; font:Verdana, Geneva, sans-serif; font-size:12px;">


<table width="800px" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td colspan="6" style="text-align:center; background-color:#000">
    <a href="index.php"><?php  include("topo.php");?></a></td>
  </tr>
  <tr>
  
  <!-- Toda a parte do menu em php -->
    <td width="168" rowspan="3" style="text-align:left"><div style="position:absolute; left: 16px; top: 232px;"><?php $sql = "SELECT * FROM categoria";
$resultado = mysql_query($sql) or die ("ouve um erro ao mostrar os arquivos, talvez seja erro de banco de dados entre em contato contato@flycratry.com");
while($registro=mysql_fetch_array($resultado))
{
	?>
<a href="index.php?id=<?php echo $registro[id] ?>"><?php echo $registro[categoria];?></a><br />
<?php 
$id_para_subcategoria= $_GET["id"];
if($id_para_subcategoria != "")
{
	
	$sql2 = "SELECT * FROM subcategorias WHERE id_categoria = '$registro[id]'";
	$resultado_subcategorias = mysql_query($sql2) or die ("tem erro no script");
	while($registro2= mysql_fetch_array($resultado_subcategorias))
	{
		
	if ($id_para_subcategoria == $registro2[id_categoria])
	{
	?>
   --<a href="subcategorias.php?id=<?php echo $registro2[id_categoria]; ?>&id_subcategoria=<?php echo $registro2[id_subcategoria]; ?>"><?php echo $registro2[subcategoria]?></a><br />
<?php
	}
	}
	
	}
?>


<?php
}?>
<!-- fim da parte do menu em php -->
</div>



</td>
    <td width="195" style="text-align:center"><strong>Produto</strong></td>
    <td width="138" style="text-align:center"><strong>Quantidade</strong></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
    <td width="120" rowspan="4" style="text-align:center"> propaganda </td>
  </tr>
<?php 
$id_produtos = isset($_COOKIE['id_produto']) ? $_COOKIE['id_produto'] : FALSE;
if ($id_produtos)  {
        $id_separa = explode(',',$_COOKIE['id_produto']);
        foreach ($id_separa as $id) {
                $res = mysql_query('SELECT * FROM `produtos` WHERE `id_produto`='.$id);
                while ($x = mysql_fetch_assoc($res)) {
						echo $id_produtos;
                        echo '<pre>';
                        print_r($x);
                        echo '</pre><br /><br /><br />'; //Ex: echo $x['xxxxx']
?>
  
  <tr>
    <td style="text-align:center"><?php echo $x[nome]; ?></td>
    <td width="138" style="text-align:center"> </td>
    <td width="89" style="text-align:center"><strong><a href="a">Remover</a></strong></td>
    <td width="90" style="text-align:center"><strong><a href="a">Editar</a></strong></td>
  </tr>
  
  <?php 
                }
        }
}
?>
  
  <tr>
    <td style="text-align:center"><a href="a">Continuar Orçamento</a></td>
    <td width="138" style="text-align:center"><a href="a">Enviar Orçamento</a></td>
    <td width="89" style="text-align:center"> </td>
    <td width="90" style="text-align:center"> </td>
  </tr>
  <tr>
    
  </tr>
  <tr>
    <td colspan="6" style="text-align:center">Rodapé</td>
  </tr>
</table>

</body>
</html>

aparece assim daquele jeito que lhe falei:

Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos analisar essas variáveis.

 

<?php
$id_produto = (int)$_GET['id'];
echo 'ID PRODUTO:'.$id_produto.'<br>';
if ($id_produto > 0) {
        if (isset($_COOKIE['id_produto'])) {
                $_COOKIE['id_produto'] .= ','.$id_produto;
echo 'RESULTADO FINAL COOKIE:'.$_COOKIE['id_produto'].'<br>';
        } else {
                setcookie('id_produto', $id_produto);
        }
        //header('Location: carrinho_decompras.php');
} else {
        echo 'Foi detectado um erro no script. Por favor, retorne e tente novamente, caso não consiga, comunique-nos';
        echo '<a href="index.php">Voltar</a>';
}
?>

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.