PHP que passa o valor no carrinho

Criei uma página de carrinho de compras usando o PHP. Agora, o problema que encontrei foi que, quando adiciono um produto ao carrinho na lista de produtos, o que acontece é que apenas o 1º produto da lista é adicionado.

Quando adiciono outro produto (desde que cada produto da lista possui o botão Adicionar ao carrinho), o primeiro produto é adicionado novamente. Não importa o item que eu escolher, ele ainda termina com o primeiro produto a ser adicionado.

Estou esquecendo de algo?

Aqui está o meu código:

Lista de produtos:

     <img src="https://stackoverflow.com/questions/25626611/php-passing-value-on-cart/admin/" width="80" height="80" />      

Eu estou passando valores usando tipos de input escondidos.

Adicionar ao carrinho:

  

Mostrar carrinho:

  

Eu suspeito que o erro esteja no código da Lista de Produtos, mas eu também tenho o arquivo AddtoCart.

Esta não é uma resposta para corrigir questões de OPs, mas uma seção para corrigir alguns dos “erros” de OPs

header()

Quando você está enviando um header, certifique-se de exit; ou die; logo depois, como você deseja que o código pare e não processe mais.

 header("location:https://stackoverflow.com/questions/25626611/php-passing-value-on-cart/prodtable.php"); die; 

mysql e mysqli

Escolha um ou outro. De preferência, mysqli como mysql está obsoleto.

Esta extensão está obsoleta a partir do PHP 5.5.0 e não é recomendável para escrever um novo código, pois será removido no futuro. Em vez disso, a extensão mysqli ou PDO_MySQL deve ser usada

Indentação

Você tem uma mistura de “técnicas” de indentação e design de código. Fique com um.

  • Às vezes você tem { na mesma linha que a condição, às vezes você a possui na nova linha.
  • Às vezes você tem indentação, às vezes você não.

Validar e desinfetar a input

Você está confiando muito em mysql_real_escape_string() que;

  • Faz parte de uma biblioteca obsoleta
  • Não valida a input

Valide a input antes de tentar inseri-la no database. Isso salvará uma dor de cabeça mais tarde se você esperar que algo esteja no database e, por causa de nenhuma validação de dados anteriormente, um sistema particular pode cair (e ter um efeito fatal).

  Is foo an int -------------- Kill process, tell user. | (NO) | (YES) | | Ok. Do further checks 

Comentários

Por favor use mais destes, por sua própria causa.

Sim, eu sei que isso não é codereview.se, mas eles precisavam ser abordados. Eu vi tantas questões sobre as quais essa postagem deveria ser aplicada.

Ok, aqui está a Lista de produtos.

    

  
Name
Description
Price
Image
Actions

Obrigado pelas sugestões, vou levar essas.

Seus campos de input estão fora do seu loop do, então o valor sempre permanecerá o mesmo – ou seja: sempre será o primeiro produto.

   

Já fixa. O erro (lógico) veio de um javascript usado para atualizar a página do carrinho de compras.

  

De qualquer forma. Obrigado pela sua resposta pessoal. Esta será uma postagem sobre isso.

Intereting Posts