Problème php - Méthode post actualisation

Fermé
tranzebou - 15 janv. 2008 à 14:32
 scorpion16000 - 17 avril 2008 à 14:08
Bonjour,
Je travaille sur la mise en place d'un panier pour un site d'e-commerce et j'ai un problème avec un formulaire (form = post) lorsque j'actualise la page du panier.

J'ai un premier script avec le formulaire permettant de saisir l'article à commander et la quantité dans une liste déroulante.

J'ai simplifié le script mais en gros ça donne ça:
<form method='post' action='panier.php' target='_top'>
<input name='code_prod' type='hidden' value='$ligne_produit->code_prod'>
<select name='quantite'>";
for ($k=1;$k<100;$k++)
{ echo "<option value=$k>$k</option>";}
echo "</select>
<input name='ajout' type='submit' value='Ajouter au panier'>
</form>

Ensuite, dans le script panier.php, on récupère le code du produit et les quantités. Si le produit existe déjà dans le panier, on ajoute les quantités postées aux quantités du produit déjà existantes sinon on ajoute le code du produit et les quantités.

Le problème vient du fait qu'en actualisant la page internet, cela ajoute systématiquement les quantités postées dans le dernier formulaire.


Par exemple, je commande 10 produits A

Je suis redirigé vers la page panier.php où je peux voir un récapitulatif avec "produit A : 10"
Si j'actualise la page, la méthode post ajoute à nouveau 10 produits, ce qui donne "produit A : 20" et ceci indéfiniment à chaque actualisation.

Voila un court passage du script panier.php

if (isset($_POST['code_prod']))
{
$existe=0;
$size=count($liste_code_produit);
for ($k=0;$k<$size;$k++)
{
$id = $liste_code_produit[$k];
if ($id==$_POST['code_prod'])
{
$qte=$liste_quantite[$k]+$_POST['quantite'];
$liste_quantite[$k] = $qte;
$k=$size;
$existe=1;
}
}
//si le produit n'est pas présent dans le panier
if ($existe==0)
{
$liste_code_produit[] = $_POST['code_prod'];
$liste_quantite[] = $_POST['quantite'];
}
//Actualisation des données dans la session
$_SESSION['liste_code_produit'] = $liste_code_produit;
$_SESSION['liste_quantite'] = $liste_quantite;
$quantite_totale = $quantite_totale + $_POST['quantite'];
$_SESSION['nombre_article'] = $quantite_totale;
}


Si quelqu'un sait comment éviter ce bug, merci beaucoup
A voir également:

2 réponses

Blue project
15 janv. 2008 à 20:01
lors de ton actualisation, tu réenvoie les infos de ton formulaire. passe par une page genre
ta page de selection poduit => page de validation
page de validation => panier.php

Ta page de validation peu mettre a jour les variables de 2 produits passer à 5...

sachant qu'en fesant cela la page de validation n'est pas afficher si tu met que du code php qui est suivit d'un header
0
scorpion16000
17 avril 2008 à 14:08
Bonjour,

Jai le meme probleme mais je ne peux pas passer par une page de validation car la saisie doit s'enchainer avec la possibilitée d'avoir des valeurs identiques.

alors comment faire??

merci d'avance
0