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

Carrinho de Compras


david.lyonnais

Pergunta

Estou criando uma sistema de carrinho de compras,só que está tendo um pequeno problema ao adicionar um produto no carrinho.

Segue o código da página que exibe os produtos.

loja.php

<?php
session_start();
include("conexao.php");
include ("carrinho.class.php");
$cr = new Carrinho();
if(isset($_POST['add'])){
$cr->addProduto($_GET['id'],$_POST['qnt']);
}
?>
<html>
<head>
<title></title>
<body>
<?php
$sql = "SELECT * FROM produtos ORDER BY RAND()";
$rs = mysql_query($sql);
while($produto = mysql_fetch_array($rs)) {
echo "<div>";
// Mostrando a imagem do produto e o nome
echo "<form action=\"?id=".$produto['id']."\" method=\"post\">";
echo "<img src=\"miniatura.php?imagem=".$produto['img']."&tam=100\" ><br /><b>".$produto['nome']."<br><br>";
// Mostrando o preço
echo "R\$ " . number_format($produto['preço'], 2, ",", "") . "<br />";
// Mostrando o botão pra adicionar ao carrinho
echo "<label>Quantidade:</label><input type=\"text\" name=\"qnt\" size=\"5\"><input type=\"image\" name=\"add\" src=\"carrinho.png\" ><br><br>";
echo "</form>";
echo "</div>";
}
?>
</body>
</html>
Acho que o problema ta nessa linha:
if(isset($_POST['add'])){
$cr->addProduto($_GET['id'],$_POST['qnt']);
}
Código da função addProduto()
public function addProduto($id,$qnt){
       $sessao = session_id();
       //Inserir produto no carrinho
       $sql = "INSERT INTO carrinho (cod, quant, sessao) VALUES ($id, $qnt, '$sessao')";
       $rs = mysql_query($sql);
       if($rs){
        echo "Produto adicionado com sucesso.\n";
        echo "<a href=\"java script:history.back();\" target=\"_self\">Continuar a comprar</a>";
        exit;
       }else{
        echo "O produto não pode ser adicionado ao carrinho de compras.\n";
        echo "<a href=\"java script:history.back();\" target=\"_self\">Voltar e tentar novamente.</a>";
        exit;
       }
}

Ele atualiza a pagina com o parametro na url ?id=1 , so que simplismente faz nada , não aparece erro nada, carrega a pagina normalmente, como se o if tivesse dando false.

Mais essa foi unica maneira que arranjei pra mandar parâmetro via get e post que seria o id do produto e a quantidade a ser comprada.

Quebrei a cuca já...

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

David,

É interessante verificar se foram preenchidos os parâmetros do método addProduto. Desta forma, você vai ter segurança que o insert só será executado caso os parâmetros forem preenchidos.

public function addProduto($id = null,$qnt = null)
{
       //verifica se os parâmetros foram preenchidos
       if(!$id || !$qtd){
            echo "O id ou a quantidade não foram informados";
            exit;
       }
       
       $sessao = session_id();
       //Inserir produto no carrinho
       $sql = "INSERT INTO carrinho (cod, quant, sessao) VALUES ($id, $qnt, '$sessao')";
       $rs = mysql_query($sql);
       if($rs) {
            echo "Produto adicionado com sucesso.\n";
            echo "<a href=\"java script:history.back();\" target=\"_self\">Continuar a comprar</a>";
            exit;
       } else {
            echo "O produto não pode ser adicionado ao carrinho de compras.\n";
            echo "<a href=\"java script:history.back();\" target=\"_self\">Voltar e tentar novamente.</a>";
            exit;
       }
}

Editado por Romero Dias
Link para o comentário
Compartilhar em outros sites

  • 0

Adiciona estas linhas no início do seu código:

error_reporting(E_ALL);
ini_set('display_errors', '1');
E altere sua função para esta e teste:
public function addProduto($id = null,$qnt = null)
{
       //verifica se os parâmetros foram preenchidos
       if(!$id || !$qnt){
            echo "O id ou a quantidade não foram informados";
            exit;
       }
      
       $sessao = session_id();
       //Inserir produto no carrinho
       $sql = "INSERT INTO carrinho (cod, quant, sessao) VALUES ($id, $qnt, '$sessao')";
       $rs = mysql_query($sql) or die(mysql_error());
       if(mysql_affected_rows()){
            echo "Produto adicionado com sucesso.\n";
            echo "<a href=\"java script:history.back();\" target=\"_self\">Continuar a comprar</a>";
            exit;
       } else {
            echo "O produto não pode ser adicionado ao carrinho de compras.\n";
            echo "<a href=\"java script:history.back();\" target=\"_self\">Voltar e tentar novamente.</a>";
            exit;
       }
}

Link para o comentário
Compartilhar em outros sites

  • 0

David,

Vi que seu script recupera todos os produtos e faz um looping, imprimindo um form para cada produto encontrado. Só que, não encontrei o botão que submete o fom, ou seja, sem um botão de submit, como o usuário vai carregar o produto no carrinho?

{...}
// Mostrando o botão pra adicionar ao carrinho
echo "<label>Quantidade:</label>
    <input type=\"text\" name=\"qnt\" size=\"5\">
    <input type=\"image\" name=\"add\" src=\"carrinho.png\">
    <input type=\"submit\" value=\"Adicionar\">
    <br><br>";
echo "</form>";
echo "</div>";
{...}

Link para o comentário
Compartilhar em outros sites

  • 0

Pensei que o input type="image" já fazia a função de submit.

<input type=\"image\" name=\"add\" src=\"carrinho.png\" >

@EDIT

Realmente não estava fazendo o submit , mas mesmo assim persistiu o erro.

esqsi de colocar o value="submit".

@Eu vo da uma pausa nesse projeto e vo começar outro,então não presisa se preocupar, quando eu presisar de novo eu ressuscito o tópico.

Editado por david.lyonnais
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,3k
    • Posts
      652,1k
×
×
  • Criar Novo...