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 quando 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 porque dá esse erro no IE.
<? 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="java script: 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][preço] = $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>";
}
?>
Pergunta
Diego - Ds2Web
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 quando 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 porque dá esse erro no IE.
Quem quiser conferir o site é esse: http://www.sintoniaperfeita.com.br/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="java script: 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][preço] = $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][preço]; //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][preço],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.
Editado por quintelabRemovido descrição
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.