PHP - [panier électronique] bouton recalculer

Fermé
almaje - 21 juin 2010 à 17:30
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 - 22 juin 2010 à 13:19
Bonjour,

Je crée un panier électronique et je bug sur le bouton recalculer.

Lorsque j'ajoute un article à mon panier et je l'affiche j'affiche la quantité dans un champ text pour qu'on puisse la modifier si on veut et le nom de chaque champ text change pour que je n'ai pas le meme nom sur tous les champs texte, je vous montre un peu le code :

echo "<tr>";
			echo "<td><input name=\"supp\" type=\"Submit\" value=\"Delete\" size=5></td>";
			echo "<td><img src=\"".$row[2]."\" width=\"100\" height=\"100\" ><b>".$row[1]."</b></td>";
			echo "<td><input type=\"text\" value=".$_SESSION['panier']['qte'][$i]." name=\"quantite_$i\" size=\"1\" dir=\"rtl\"></td>";
			echo "<td>".$_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prix'][$i]."</td>";
			echo "</tr>";


le nom du champ texte est quantité_$i et $i change sur chaque article.

Comment je pourrai prendre faire un $_post pour prendre la valeur du champ et savoir pour qu'elle est produit ça fait référence ?
A voir également:

2 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 327
Modifié par Yoan le 21/06/2010 à 19:56
Tu ne la "fais" pas, elle est déjà "faite".

Tu n'as plus qu'à l'utiliser. Par exemple $_POST["quantité_3"] correspondra au nombre d'exemplaires souhaités de l'article 3.

C'est toi qui fait la correspondance entre le $i et l'id de ton produit.

Si, au moment de générer le bon de commande tu mets un $i au hasard pour chaque article, tu n'as pas moyen de savoir quel est le produit commandé car ton script ne sait pas que l'article 3 correspond aux chaussures de pointure 42.

Typiquement ton $i est un identifiant de base de données. Pour savoir ce qu'a commandé le client si : $_POST["quantité_3"]=1 et $_POST["quantité_8"]=2 tu interroges la base de données sur les id 3 et 8. Si 3 est un anorak et 8 une paire de moufles, alors le client a commandé 1 anorak et 2 paires de moufles.
L'urgent est fait, l'impossible est en cours,
Pour les miracles, prévoir un délai ...
0
je t'explique un peu comment s'exécute mon script :

$nb_articles = count($_SESSION['panier']['id_article']); 
	for($i = 0; $i < $nb_articles; $i++) 
	{
		$num=$_SESSION['panier']['id_article'][$i];
		print_r ($num);
		$sql="select * from produit where id=$num";
		if (!$result=mysql_query($sql)) die(mysql_error()); 
		while($row=mysql_fetch_row($result))
			{
			echo "<tr>";
			echo "<td><input name=\"supp\" type=\"Submit\" value=\"Delete\" size=5></td>";
			echo "<td><img src=\"".$row[2]."\" width=\"100\" height=\"100\" ><b>".$row[1]."</b></td>";
			echo "<td><input type=\"text\" value=".$_SESSION['panier']['qte'][$i]." name=\"quantite_$i\" size=\"1\" dir=\"rtl\"></td>";
			echo "<td>".$_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prix'][$i]."</td>";
			echo "</tr>";
			
			}
	}


le client ajoute un produit avec une quantité désirée, apres il souhaite l'éditer sur son panier (en editant la quantité sur le champ texte), comment vais-je savoir moi quel champ texte a été editer pour faire le post et prendre la nouvelle valeur et la mettre sur $_SESSION['panier']['qte'][$i] (du meme article).
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 327
Modifié par Yoan le 22/06/2010 à 13:22
Bah tu t'en fout de ce qui a été modifié, tu vides le tableau de session et tu le remplaces par le tableau reçu du client sans te soucier du fait qu'il a pu être modifié ou non.

Au pire si vraiment tu tiens à contrôler quels articles ont été modifiés utilise des fonctions de comparaison de tableau ou, dans le pire des pires des cas tu parcoures le tableau de session et pour chaque élément tu vérifies si la valeur dans $_GET() est toujours la même.

EDIT : avant de "remplacer" le tableau n'oublie pas qu'on ne fait jamais confiance au client : vérifie que les articles existent et que la quantité commandées est correcte (càd qu'il n'a pas commandé "bgfjbgjrfr" paires de chaussettes ou 500000000000 blousons ou -2 casquettes ...)
0