Page 1 sur 1

Panier supprimer un article

Posté : 15 déc. 2006, 23:41
par stefane321
Bonjour,

Après bien des heures d'ssais et d'erreur j'ai presque terminé mon panier d'achat.

Je bloque cependant sur la suppression d'article.

Mon panier affiche tout les articles un en dessous des autres avec chacun une case à cocher et au bas du panier qui est en soit un formulaire il y a un bouton submit qui sert à retirer du panier:

Code de l'affichage du panier:
sous_total();
echo "<form name=\"form_qte\" action=\"panier3.php\" method=\"post\">\n";
echo "<table align=\"center\" width=\90%\" class=\"border\">\n";
echo "<tr>\n";
echo "<td colspan=\"5\" class=\"border3\" align=\"center\"><b>Voici le contenu de votre panier</b></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class=\"border2\"><b>Produit:</b></td>\n";
echo "<td class=\"border2\"><b>Quantit&eacute;:</b></td>\n";
echo "<td class=\"border2\"><b>Format:</b></td>\n";
echo "<td class=\"border2\" align=\"center\"><b>Prix:</b></td>\n";
echo "<td class=\"border2\"><b>Supprimer:</b></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td colspan=\"5\"><input type=\"hidden\" name=\"page_retour\" value=\"".$_POST["page_retour"]."\"></td>\n";
echo "</tr>\n";
$nb_produits = 0;
$nb_produits = count($_SESSION["panier"]["id_produit"]);
for($i = 0; $i < $nb_produits; $i++)
{
echo "<tr>\n";
echo "<td class=\"border2\">".$_SESSION['panier']['nom_produit'][$i]."<input type=\"hidden\" name=\"nom_produit_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION['panier']['nom_produit'][$i]."\">";
//echo "<input name=\"choix[]\" type=\"hidden\" value=\"".$_SESSION["panier"]["id_produit"][$i]."\">\n";
echo "<input type=\"hidden\" name=\"id_produit_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION["panier"]["id_produit"][$i]."\"></td>\n";
echo "<td class=\"border2\"><input type=\"text\" name=\"qte_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION['panier']['qte'][$i]."\" size=\"2\"></td>\n";
echo "<td class=\"border2\">".$_SESSION['panier']['nom_format'][$i]."<input type=\"hidden\" name=\"nom_format_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION['panier']['nom_format'][$i]."\">\n";
echo "<input type=\"hidden\" name=\"format_id_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION['panier']['format_id'][$i]."\"></td>\n";
echo "<td class=\"border2\" align=\"right\">".$_SESSION['panier']['prix'][$i]."&nbsp;$&nbsp;&nbsp;<input type=\"hidden\" name=\"prix_".$_SESSION["panier"]["id_produit"][$i]."\" value=\"".$_SESSION['panier']['prix'][$i]."\"></td>\n";
echo "<td class=\"border2\" align=\"right\"><input name=\"choix[]\" type=\"checkbox\" value=\"".$_SESSION["panier"]["id_produit"][$i]."\"></td>\n";
echo "</tr>\n";
}
echo "<tr>\n";
echo "<td class=\"border2\">Sous-total :</td>\n";
echo "<td class=\"border2\" colspan=\"4\" align=\"right\">".$GLOBALS["sous_total"]."&nbsp;$&nbsp;&nbsp;<input name=\"sous_total\" type=\"hidden\" value=\"".$GLOBALS["sous_total"]."\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class=\"border2\">TPS :</td>\n";
echo "<td class=\"border2\" colspan=\"4\" align=\"right\">".$GLOBALS["tps"]."&nbsp;$&nbsp;&nbsp;<input name=\"tps\" type=\"hidden\" value=\"".$GLOBALS["tps"]."\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class=\"border2\">TVQ:</td>\n";
echo "<td class=\"border2\" colspan=\"4\" align=\"right\">".$GLOBALS["tvq"]."&nbsp;$&nbsp;&nbsp;<input name=\"tvq\" type=\"hidden\" value=\"".$GLOBALS["tvq"]."\"></td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td>Total :</td>\n";
echo "<td colspan=\"4\" align=\"right\">".$GLOBALS["total"]."&nbsp;$&nbsp;&nbsp;<input name=\"total\" type=\"hidden\" value=\"".$GLOBALS["total"]."\"></td>\n";
echo "</tr>\n";
echo "</table>\n";
Mon problème est qu'il ne supprime pas le produit coché mais tout le reste.

Voici mon code qui retire du panier:
if(isset($_POST['retirer']))
{
  	$_SESSION['panier_tmp']                = array();
	$_SESSION['panier_tmp']['id_produit']  = array();
	$_SESSION['panier_tmp']['nom_produit'] = array();
    $_SESSION['panier_tmp']['format_id']   = array();
	$_SESSION['panier_tmp']['nom_format']  = array();
	$_SESSION['panier_tmp']['qte']         = array();
	$_SESSION['panier_tmp']['prix']        = array();

	foreach($_POST["choix"] as $i)
	{
			$nb_produits = 0;
			$nb_produits = count($_SESSION["panier"]["id_produit"]);
				for($y = 0; $y < $nb_produits; $y++)
				{
					if($_SESSION["panier"]["id_produit"][$y] != $_POST["id_produit_".$i.""])
					{
					array_push($_SESSION['panier_tmp']['id_produit'],$_POST['id_produit_'.$i.'']);
					array_push($_SESSION['panier_tmp']['nom_produit'],$_POST['nom_produit_'.$i.'']);
					array_push($_SESSION['panier_tmp']['format_id'],$_POST['format_id_'.$i.'']);
					array_push($_SESSION['panier_tmp']['nom_format'],$_POST['nom_format_'.$i.'']);
					array_push($_SESSION['panier_tmp']['qte'],$_POST['qte_'.$i.'']);
					array_push($_SESSION['panier_tmp']['prix'],$_POST['prix_'.$i.'']);
					}
				}
			$_SESSION['panier'] = $_SESSION['panier_tmp'];
			unset($_SESSION['panier_tmp']);
	}
}
Pouvez-vous m'aider svp?

Posté : 16 déc. 2006, 01:08
par Cyrano
As-tu déjà vu ce tuto ?

Oui

Posté : 16 déc. 2006, 02:14
par stefane321
Oui, c'est à partir de ce tuto que je travail depuis le début.

Sauf que ce tuto traite un produit à la fois et moi mes produits un chacun un checkbox pour que le client puisse en supprimer plus d'un à la fois.

Je n'ai pas suivi le tuto à 100% mais à part mon bug de ce post sa roule.

Posté : 16 déc. 2006, 09:19
par Cyrano
Je saisis mal pourquoi tu as mis ce sujet en délestage, je trouve qu'il ne manque pas d'intérêt, au contraire : comprendre d'où vient une erreur et y apporter la solution peut servir à d'autres.

Quant au nombre de produits traités, ce n'est pas incompatible avec le tuto. Il te faut adapter le code utilisant les fonctions. Si on est par exemple dans une page montrant le contenu du panier, tu pourras avoir plusieurs produits, c'est logique. Chaque fonction traite un seul produit à la fois : pour que ça marche, il faut donc passer par une boucle qui va récupérer un tableau et pour chaque item appeler la fonction appropriée de traitement de ton panier. Ça veut donc dire que tu dois construire la page de panier de façon à avoir des données dans des tableaux indexés.

Au final, tu as résolu la question ou pas ?

Posté : 16 déc. 2006, 15:03
par FredoMkb
Bonjour :)
Je saisis mal pourquoi tu as mis ce sujet en délestage, je trouve qu'il ne manque pas d'intérêt, au contraire : comprendre d'où vient une erreur et y apporter la solution peut servir à d'autres.
Bon, vous me prendrais certainement pour un "naze", mais, si j'ai bien compris le rôle du bouton "Résolu", celui du bouton "Délestage" m'échappe un peu, malgré une recherche et une consultation du Faq... alors, sans vouloir faire du hors-sujet sur ce topic, quelqu'un pourrait m'éclairer à ce sujet ? Merci :)

Posté : 16 déc. 2006, 15:30
par Cyrano
... si j'ai bien compris le rôle du bouton "Résolu", celui du bouton "Délestage" m'échappe un peu...
Ça indique un sujet sans réponse ni intérêt. Lorsque tu fais une recherche dans le forum, ces sujets là ne ressortiront pas dans la liste.

Posté : 16 déc. 2006, 17:53
par FredoMkb
Ça indique un sujet sans réponse ni intérêt. Lorsque tu fais une recherche dans le forum, ces sujets là ne ressortiront pas dans la liste.
Ouf... :shock: j'ai bien fait de demander moi, puisque j'ai pensé, au début, que c'était pour marquer les discussions vouées au recyclage numérique de la base de données... autrement dit, les messages à supprimer... :cry:

Ok, merci pour l'info Cyarno... quant à moi, j'arrête de polluer ce topic avec des questions qui n'ont rien à voir avec le sujet traité... ;)