Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Carrinho de compras: IE Adiciona 2 produtos de uma vez


Diego - Ds2Web

Pergunta

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 "&lt;script>location.href='shop_cart.php';</script>";
}//fecha if
else{
echo "&lt;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 quintelab
Removido descrição
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Se funciona em um e não funciona em outro (ou funciona de forma errada), ai o problema não é com o PHP, é algum JS/HTML com problema, pelo que eu vi, você usa JS para disparar o formulário:

<input type="image" src="images/btn_comprar.jpg" onClick="java script: document.forms[0].submit();">

Eu começaria a testar por ai... trocando isso dai por um botão convencional...

Link para o comentário
Compartilhar em outros sites

  • 0

Completando a resposta do ESerra, um input do tipo image age da mesma forma que um do tipo submit. Talvez, por algum motivo muito estranho, esteja gravando duas vezes no IE por que ao clicar na imagem o formulário é enviado, e também é disparado o evento onclick que também envia o formulário.

Provavelmente se você tirar o onclick vai resolver o problema.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...