Ir para conteúdo

POWERED BY:

Arquivado

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

Andre Summers

de compras...

Recommended Posts

Boa tarde.

 

Estou tentando fazer um carrinho de compras para meu site. Consegui fazer com que os dados fossem preenchidos no index e passados pra página carrinho.php, onde são corretamente exibidos. Mas os dados não ficam gravados...

 

Se você voltar ao index e clicar para comprar outro produto, você é levado ao carrinho mas só exibe os dados do ultimo produto que você clicou p/ comprar.

 

Como faço para ficar armazenado os dados na pagina carrinho.php?

E como faria para permitir que o usuario exclua os produtos no carrinho um por um?

 

Se puderem me ajudar, eu muito agradeço.

 

:unsure:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Armazene as informações dos produtos em arrays dentro de uma sessão. Depois, use um loop para percorrer o array e mostrar os produtos do carrinho.

 

Para excluir os produtos, eu usaria o ID do produto como chave.

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nao to sabendo fazer direito... pode ajudar?

 

<?
include("conecta_mysql.php");
?>
<?
//INICIALIZA A SESSÃO
session_start();

//Pegando as variaveis
$id  =  $_POST["id"];
$qtd  =  $_POST["qtd"];
$nome  =  $_POST["nome"];

 //VERIFICA
   if(!empty($qtd) ) {
   
   $carro['qtd'] = $qtd;
   $carro['nome'] = $nome;
   	  
   
$_SESSION[carro] = $carro;
	
?>

<html>
<head>
<title>Seu Carrinho</title>
<style type="text/css">
<!--
a:link {
	color: b22622;
	text-decoration: none;
}
a:visited {
	text-decoration: none;
}
a:hover {
	text-decoration: none;
	color: #FF0000;
}
a:active {
	text-decoration: none;
}
.style1 {
	font-size: 9px;
	font-weight: bold;
	font-family: Arial, Helvetica, sans-serif;
}
.style2 {
	color: #FFFFFF;
	font-weight: bold;
}
-->
</style>
</head>

<body>
<table width="450" height="75" align="center">
<tr>
<td width="67" bgcolor="b22622"><div align="center"><span class="style2">Código</span></div></td>
<td width="94" bgcolor="b22622"><div align="center"><span class="style2">Quantidade</span></div></td>
<td width="273" bgcolor="b22622"><div align="center"><span class="style2">Nome</span></div></td>
</tr>


<tr>
<td height="25"> </td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][qtd]; ?></span></div></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][nome]; ?></span></div></td>
</tr>


	  <tr>
		<td align="center" colspan="2"><font color="#b22622" face="Verdana, Arial, Helvetica, sans-serif" size="2"><strong><a href="java script: history.back();"><< Voltar </a></strong></font></td>
	  </tr>
</table>
	  

</body>
</html>
<?
	   }//FECHA IF  
	   else {
	  
	  echo "Seu carrinho está vazio.";
	  }
?>
http://forum.imasters.com.br/public/style_emoticons/default/upset.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que você deveria usar um array desta forma:

 

$produtos[0]['id'] = id do produto

$produtos[0]['nome'] = nome

$produtos[0]['preco'] = preço

$produtos[0]['quantidade'] = quantidade

$produtos[1]['id'] = id do produto

$produtos[1]['nome'] = nome

$produtos[1]['preco'] = preço

$produtos[1]['quantidade'] = quantidade

...

 

Desse forma é possível ter vários produtos no carrinho.

 

Para percorrer esse array, use loops como for, while ou foreach.

 

http://br.php.net/for

http://br.php.net/while

http://br.php.net/foreach

 

Abraços,

Beraldo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Eu consegui fazer os produtos ficarem guardados numa sessão. Ta exibindo direitinho.

 

Agora estou tendo problemas para excluir um produto por vez. Coloquei um checkbox pra cada produto e um botão excluir, só que não to sabendo excluir apenas a linha marcada no check...

 

podem ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu coloquei um checkbox antes de cada produto.

<?
$aux = 0;
while($aux != count($carro)){

		 ?>
<tr>
<td><input name="check" type="checkbox" value="<? echo $aux; ?>"></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][codigo]; ?></span></div></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][qtd]; ?></span></div></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][nome]; ?></span></div></td>
</tr>
<?
$aux = $aux+1;
 } 
?>

O form envia pra uma pag com o seguinte codigo:

 

<?
$id  =  $_POST["check"];

unset($_SESSION[carro][$id][codigo]);
unset($_SESSION[carro][$id][nome]);
unset($_SESSION[carro][$id][qtd]);

echo "$id";

//header("Location: carrinho.php");
?>

Só que ele não ta excluindo os produtos.

Dá um help ai please.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você tentar excluir somente um produto de cada vez, dá certo? Se você quiser permitir exclusões múltiplas, terá de tratar o $id como um array, sendo necessário colocar check[] no name do checkbox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certeza de que o submit do form está levando à página que você postou? Antes de usar unset(), tente exibir o conteúdo de $id. Veja o que aparece. Veja também no código-fonte HTML do carrinho se o ID do produto está aparecendo corretamente no value do checkbox.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem certeza de que o submit do form está levando à página que você postou? Antes de usar unset(), tente exibir o conteúdo de $id. Veja o que aparece. Veja também no código-fonte HTML do carrinho se o ID do produto está aparecendo corretamente no value do checkbox.

O submit esta levando a página certa sim.

Coloquei para exibir o id e ele exibe o indice do array do produto em questão.

Verifiquei o HTML e o value do checkbox eh igual ao indice do produto no array.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você iniciou a sessão no arquivo que faz a exclusão? É necessário usar session_start() no início de todos os arquivos que utilizarão a sessão.

Você também pode trocar as três linhas do unset por somente esta:

 

PHP
unset($_SESSION[carro][$id]);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda continuo com dificuldades. Se puder ajudar eu agradeço. O arquivo que exclui ta assim:

 

session_start();
$id = $_POST['check'];
$contador=0;
while ($contador <= count($id)){
	$contador_carro=0;
	while ($contador_carro <= count($carro)){
		if ($contador_carro == $id[$contador]){
			unset($_SESSION[carro][$id[$contador]][codigo]);
			unset($_SESSION[carro][$id[$contador]][nome]);
			unset($_SESSION[carro][$id[$contador]][qtd]);
//Essa parte só funciona assim nao sei pq
			}
		$contador_carro=$contador_carro + 1;
		}
		$contador=$contador+1;
	}

header("Location: carrinho.php");

Não está excluindo mais de uma linha. E no arquivo do carrinho.php não estou conseguindo verificar se o carrinho esta vazio e imprimir uma mensagem.

 

<?
$aux = 0;
$EmBranco=0;
while($aux != count($carro)){
	if ($_SESSION[carro][$aux][codigo]!=""){
	$EmBranco=$EmBranco+1;
		 ?>
<tr>
<td><input name="check[]" type="checkbox" value="<? echo $aux; ?>"></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][codigo]; ?></span></div></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][qtd]; ?></span></div></td>
<td height="25"><div align="center"><span class="style1"><? echo $_SESSION[carro][$aux][nome]; ?></span></div></td>
</tr>
<?
	}
	if (EmBranco == 0){
		echo "Seu carrinho está vazio";
		}
$aux = $aux+1;
 } 
?>


	  <tr>
		<td align="center" colspan="2"><div align="left">
		  <input name="btnExcluir" type="submit" class="style4" id="enviar" value="Excluir">
		</div></td>
	  </tr>
	  <tr><td><br><br></td></tr>
	  <tr>
		<td align="center" colspan="2"><font color="#b22622" face="Verdana, Arial, Helvetica, sans-serif" size="2"><strong><a href="java script: history.back();"><< Voltar </a></strong></font></td>
	  </tr>
	  <tr>
	  <td colspan="3">
	  <a href="logout2.php"><strong>Esvaziar todo o carrinho</strong></a>
	  </td>
	  </tr>
</table>
</form>
	  

</body>
</html>

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.