Jump to content


Photo

Carrinho De Compras: Ie Adiciona 2 Produtos De Uma Vez


  • Faça o login para participar
1 reply to this topic

#1 Diego - Ds2Web

Diego - Ds2Web

    Novato no fórum

  • Usuários
  • 1 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 29/04/2010, 10:11

Olá Galera
Sou novato no php, estou terminando um site com carrinho de compras, depois de muito quebrar a cabeça pra aprender usar array no carrinho de compras, consegui do meu jeito fazer funcionar. Ele adiciona o produto, exclui e soma o total somente, bem simples.
O problema é que qdo fui testar no IE o carrinho adiciona 2 produtos de uma vez. No firefox funciona perfeitamente, já olhei o cod e não sei o pq dá esse erro no IE.
Quem quiser conferir o site é esse: http://www.sintoniap.../site/index.php
Abaixo vou colocar o cod das paginas do carrinho.
sessao_shopcart.php
<?
@session_start();
if (!session_is_registered("cesta_compras")) {
session_register("cesta_compras");
$_SESSION["cesta_compras"] = array();
//echo "Sessão Não registrada";
}
else {
//echo "Sessão registrada";
}
?>

detalhe_prod.php
<? include "sessao_shopcart.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=iso-8859-1" />
<title>Sintonia Perfeita - Perfumes importados</title>
<link href="css/layout.css" rel="stylesheet" media="screen" />
<link href="css/detalhe_prod.css" rel="stylesheet" media="screen" />
</head>
<body>
<div id="geral">
	<!-- Topo -->
	<div id="topo">
	<? include "topo.php";?>
	</div>
	<!-- end topo -->
	<!-- Nav Left -->
	<div id="nav_left">
	<? include "nav_left.php";?>
	</div>
	<!-- End Nav Left -->
	<!-- Conteudo -->
	<div id="conteudo">
		<h3 id="nome_pagina">Detalhes do produto</h3>		
		<!-- Início do PHP-->
			<?
include "conexao.php";
$id_prod= $_GET["prod"];
$sql_prod = "SELECT id, foto, nome_prod, tipo, marca, volume, categoria, volume, valor, descricao FROM tb_produtos WHERE id='$id_prod'";
$resultado = mysql_query($sql_prod) or die(mysql_error());
//function nome_marca
function mostra_marca($id_marca){
$sql = "Select * from tb_marcas where id='$id_marca'";
$resultado = mysql_query($sql) or die(mysql_error());
	while ($linha = mysql_fetch_array($resultado))
	{
	$id_marc= $linha["id"];
	$nome_marcas = $linha["nome"];
	$foto_marca = $linha["foto"];
	return $nome_marcas;
	}
}
//fin function
while ($linha = mysql_fetch_array($resultado))
{
$id= $linha["id"];
$foto = $linha["foto"];
$nome_produto = $linha["nome_prod"];
$valor = "R$" . $linha["valor"];
$marca = $linha["marca"];
$nome_marca = mostra_marca($marca);
$volume = $linha["volume"];
$categoria = $linha["categoria"];
$tipo = $linha["tipo"];
$descricao = $linha["descricao"];
$prod = $nome_produto . " - " . $nome_marca . " - " . $volume . " - " . $categoria;
$valor_c = $linha["valor"];
}
			?>
		<!-- Fim do PHP -->				
	<!--div produto -->
			<div id="produto_detalhe">
			<form name="frm_prod" method="post" action="inclui_shop_cart.php">
			<div id="img_prod"><img src="images/produtos/<? echo $foto;?>"  width="80%"/></div>
			<div id="dados_produto">
				<h2><? echo $nome_produto;?></h2>
				<p><? echo $tipo;?></p>
				<p><u><? echo $nome_marca;?></u></p>
				<p><? echo $volume;?> - <? echo $categoria;?></p>
				<p id="valor_prod"><? echo $valor;?></p>
				<input type="image" src="images/btn_comprar.jpg" onClick="javascript: document.forms[0].submit();">
			</div>
			<div id="descricao_prod">
			<h3>Características do produto:</h3>
			<p><? echo $descricao;?></p>
			</div>
			<input type="hidden" name="id_prod"  value="<? echo $id; ?>" />
			<input type="hidden" name="foto_prod"  value="<? echo $foto; ?>" />
			<input type="hidden" name="prod"  value="<? echo $prod; ?>" />
			<input type="hidden" name="valor"  value="<? echo $valor_c; ?>" />
			<input type="hidden" name="opc_efetivar"  value="1" />
			</form>
		</div>
		<!--fim div produto -->			
	</div>
	<!-- End Conteúdo -->
	<!-- Nav Right -->
	<div id="nav_right">	
		<? include "nav_right.php";?>
	</div>
	<!-- End Nav Right -->
	<!-- Rodapé-->
	<div id="rodape">
		<? include "rodape.php";?>
	</div>
	<!-- fim Rodapé-->
</div>
</body>
</html>
inclui_shop_cart.php
<?
include "sessao_shopcart.php";
//incluir item no carrinho
//verifica se foi postado mais um item no carrinho
if(isset($_POST["opc_efetivar"])){
	echo "SIM  o usuário adiocionou mais um item.<br />";
	//pega os dados do produto adicionado
	$p_id = $_POST["id_prod"];
	$p_nome = $_POST["prod"];
	$p_preco = $_POST["valor"];
	$p_foto = $_POST["foto_prod"];
	$cesta[0][id] = $p_id;
	$cesta[0][nome] = $p_nome;
	$cesta[0][preco] = $p_preco;
	$cesta[0][foto] = $p_foto;
	
	array_push($_SESSION['cesta_compras'], $cesta[0]);
	echo "<script>location.href='shop_cart.php';</script>";
}//fecha if
else{
echo "<script>history.go(-1);</script>";
}
?>

shop_cart.php
<? include "sessao_shopcart.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=iso-8859-1" />
<title>Sintonia Perfeita - Perfumes importados</title>
<link href="css/layout.css" rel="stylesheet" media="screen" />
<link href="css/detalhe_prod.css" rel="stylesheet" media="screen" />
<style>
.div_login{
width:900px;
height:auto;
margin:20px 10px;
border:solid 1px #CCCCCC;
float:left}
.texto_login{
font:12px/20px Verdana, Arial, Helvetica, sans-serif;
color: #003366;
margin:10px 15px;}
.tit_login{
font:bold 16px Verdana, Arial, Helvetica, sans-serif;
color: #CC0000;
text-align:center;
text-decoration:underline;
/*font-style:italic;*/
margin:10px 0;}
#linha_dividir{
border:none;
margin:5px 0;
clear:both;}
.frm{
font:12px/20px Verdana, Arial, Helvetica, sans-serif;
color: #003366;
}
.style1 {color: #FFFFFF}
.style2 {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 10px;
}
.style5 {color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; font-size: 10px; }
.linha{
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
border:solid 1px #CCCCCC;
}
</style>
</head>
<body>
<div id="geral">
	<!-- Topo -->
	<div id="topo">
	<? include "topo.php";?>
	</div>
	<!-- end topo -->
	<!-- Nav Left -->
	<!-- End Nav Left -->
    <!-- Conteudo -->
<div id="conteudo">
		<h3 id="nome_pagina">Cesta de compras</h3>
		<!-- Início do PHP-->
		<!-- Fim do PHP -->
		<div class="div_login">
			<?
			include "conexao.php";
			function total_carrinho(){
				$chave_cesta = array_keys($_SESSION['cesta_compras']);
				for($i=0; $i <sizeof($chave_cesta); $i++){
					$indice = $chave_cesta[$i];
					$valor_prod = $_SESSION['cesta_compras'][$indice][preco];		 		 
					 //TOTAL GERAL
					 $total   +=   ereg_replace(",",".",$valor_prod);
					 //echo "$total"  ;
				}
				return number_format($total,2,',','.');
			}
			$total_compra = total_carrinho();		
			?>
					<table width="100%" align="center" cellpadding="0" cellspacing="0">
					<tr>
					  <td width="133" height="19" align="center" bgcolor="#990000" class="coluna_tabela style1 style2">&nbsp;</td>
					  <td  align="left" bgcolor="#990000" class="coluna_tabela" colspan="2"><span class="style5">Produto</span></td>
					  <td width="130" align="center" bgcolor="#990000" class="coluna_tabela"><span class="style5">Remover</span></td>
					  <td width="135" align="center" bgcolor="#990000" class="coluna_tabela"><span class="style5">Valor Unit&aacute;rio </span></td>
					  </tr>
					  <? 
					  //função para exibir
						function exibir_prod(){
						$retorno = "";
						//mostra array cesta
							$chave_cesta = array_keys($_SESSION['cesta_compras']);
							for($i=0; $i <sizeof($chave_cesta); $i++){
								$indice = $chave_cesta[$i];
								echo "<tr>";
									echo "<td width='133' height='84' align='center' bordercolor='#CCCCCC' class='linha'><img src='images/produtos/" . $_SESSION['cesta_compras'][$indice][foto] . "' width='40%' /></td>";
									echo "<td  align='left' bordercolor='#CCCCCC' class='linha' colspan=2>".  $_SESSION['cesta_compras'][$indice][nome] . "</td>";
									echo "<td width='130' align='center' bordercolor='#CCCCCC' class='linha'><a href=exclui_shop_cart.php?e=1&chave=". $indice ."><img src='images/icone-excluir.gif' width='15' height='13' /></a></td>";
									echo "<td align='center' bordercolor='#CCCCCC' class='linha'>R$ ". number_format($_SESSION['cesta_compras'][$indice][preco],2,',','.') . "</td>";
									echo "</tr>";
							}
							return $retorno;
						}//fim funcao
					  //verifica se existe item na cesta
							$itens = count(array_keys($_SESSION['cesta_compras']));
							if($itens >0){
								$mostra = exibir_prod();
								echo "$mostra";
							}//fim if
							else{
								echo "<tr>";
								echo "<td align='center' bordercolor='#CCCCCC' height=50 class='linha' colspan=5>Você ainda não adicionou nenhum produto ao carrinho de compras.</td>";
								echo "</tr>";
							}//fim else  		
						?>
					<tr>
					  <td height="28" colspan="3" align="left" class="texto_login">CEP:&nbsp;&nbsp;
					    <input name="textfield2" type="text" value="1" size="20" />
				      <a href="#">					    N&atilde;o sabe seu CEP?</a> </td>
					  <td height="28" align="center" bgcolor="#990000" class="texto_login"><span class="style1"><strong>Valor do Frete:</strong></span></td>
					  <td height="28" align="center" class="linha">R$ 8,00 </td>
					</tr>
					<tr>
					  <td height="12" colspan="3" align="left" class="texto_login">&nbsp;</td>
					  <td height="20" align="center" class="texto_login">&nbsp;</td>
					  <td height="20" align="center" class="texto_login">&nbsp;</td>
					</tr>
					<tr>
					  <td height="29" colspan="3" align="left" class="texto_login">&nbsp;</td>
					  <td height="29" align="center" bgcolor="#990000" class="texto_login"><span class="style1"><strong>Valor do Total:</strong></span></td>
					  <td height="29" align="center" class="linha"><strong>R$ <? echo $total_compra;?></strong></td>
					</tr>
					<tr>
					  <td height="24" colspan="3" align="left" valign="bottom" class="coluna_tabela"><input type="submit" name="Submit" value="Continuar Comprando" /></td>
					  <td height="24" align="right" valign="bottom" class="coluna_tabela">&nbsp;</td>
					  <td height="24" align="center" valign="bottom" class="coluna_tabela"><input type="submit" name="Submit2" value="Finalizar compra" /></td>
					</tr>
					<tr><td height="40" colspan="5" align="center" class="coluna_tabela">
					  </td></tr>
		  </table>
	  </div>
				<hr id="linha_dividir" />
  </div>
	<!-- End Conteúdo -->
    <!-- Rodapé-->
<div id="rodape">
		<? include "rodape.php";?>
  </div>
	<!-- fim Rodapé-->
</div>
</body>
</html>

Por Favor preciso de ajuda.
Já dei uma pesquisada e não consegui entender o porque acontece isso. Pra mim não faz sentido funcionar em um e no outro não.
Acho que fiz alguma coisa do modo errado, mas não sei o que.
Se poderem me dar umas dicas eu também agradeço. Não tenho ninguém que me ajude no PHP, fiz tudo sozinho.

#2 thiagoritcher

thiagoritcher

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Masculino
  • Localidade:Goiânia

Posted 29/04/2010, 12:48

Diego, acho que tanto pra resolver o seu bug como pra melhorar uma possibilidade de bug que seria o usuário apressado querer clicar mais de uma vez no botão submit você poderia incluir um campo hidden no seu form de inclusão de produtos que tem um código gerado randomicamente. E sempre que for incluir um produto na cesta, checar se o codigo que voce esta incluindo ainda não foi incluido. Entendeu? Deve resolver o seu problema e prevenir esse outro.
Quer aprender PHP e MySQL?
http://phpsqlbr.blogspot.com/




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq