Problème php - Méthode post actualisation
tranzebou
-
scorpion16000 -
scorpion16000 -
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
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:
- Problème php - Méthode post actualisation
- Easy php - Télécharger - Divers Web & Internet
- Brouillon post instagram - Guide
- Post it windows - Télécharger - Agendas & Calendriers
- Code post - Télécharger - Vie quotidienne
- Expert php pinterest - Télécharger - Langages
2 réponses
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
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