Kelven 1 Denunciar post Postado Setembro 20, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 20, 2010 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
Kelven 1 Denunciar post Postado Setembro 20, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 20, 2010 Mesmo procedimento do exemplo com SESSION, porém com COOKIES. Você grava, depois explode. Tente fazer, qualquer coisa venha aqui. Até Compartilhar este post Link para o post Compartilhar em outros sites
Kelven 1 Denunciar post Postado Setembro 20, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 20, 2010 Vamos supor que o cookie seja 5 e $variavel seja 2. $_COOKIE["id_produto"] .= ','.$variavel; Resultado: 5,2 Depois: explode(',',$_COOKIE["id_produto"]); E um loop. Sacou? Até Compartilhar este post Link para o post Compartilhar em outros sites
Kelven 1 Denunciar post Postado Setembro 20, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 20, 2010 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
Kelven 1 Denunciar post Postado Setembro 20, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 20, 2010 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
Kelven 1 Denunciar post Postado Setembro 21, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 <?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
Kelven 1 Denunciar post Postado Setembro 21, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 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
Kelven 1 Denunciar post Postado Setembro 21, 2010 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
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 Cole toda a saída que está gerando. Tudo. E troque essa linha: if ($_COOKIE['id_produto']) { Por isso: if ($id_produtos) { Compartilhar este post Link para o post Compartilhar em outros sites
Kelven 1 Denunciar post Postado Setembro 21, 2010 olha o jeito que aparece: 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
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 Você já adicionou dois produtos diferentes no carrinho? Se só tiver esse, ele só vai exibir esse. Até agora não estou vendo erro nenhum aí. Compartilhar este post Link para o post Compartilhar em outros sites
Kelven 1 Denunciar post Postado Setembro 21, 2010 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: 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: Compartilhar este post Link para o post Compartilhar em outros sites
Matheus Tavares 167 Denunciar post Postado Setembro 21, 2010 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