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"> </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á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:
<input name="textfield2" type="text" value="1" size="20" />
<a href="#"> Nã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"> </td>
<td height="20" align="center" class="texto_login"> </td>
<td height="20" align="center" class="texto_login"> </td>
</tr>
<tr>
<td height="29" colspan="3" align="left" class="texto_login"> </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"> </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.










