Fonction caddie : ajouter/modifier/supprimer des éléments

Soyez le premier à donner votre avis sur cette source.

Snippet vu 62 283 fois - Téléchargée 27 fois

Contenu du snippet

Un caddie est un espèce de 'panier' dans lequel ont peut soit ajouter un produit, modificer la quantité de ce produit ou bien supprmier ce produit. Je sais qu'un script de ce genre éxiste déja mais j'ai essayé de l'utiliser et il ne fonctionnait pas. Alors j'ai codé un caddie moi-même qui fonctionne parfaitement. Le principe est toujours le même, on stockes les produits ainsi que leurs quantités respectives dans un tableau (array) et qui à son tour est stocké dans une variable de session.

Le tout est composé de 3 fichier qui servent à ajouter un produits(caddie_add.php), modifier une quantité(caddie_update.php) et supprimer un produit(caddie_del.php).

Source / Exemple :


<?php
// caddie_add.php... sert à ajouter un produit...
session_start();
if(isset($_GET['prod']) && isset($_GET['qtte']))
{
	// si on a spécifié un produit anisi qu'une quantité :
	// on vérifie si un panier existe déja...
	
	if(session_is_registered('panier') && is_array($panier))
	{
		
		// si le panier existe déja...
		$nbprod = count($panier);
		// on compte le nombre d'éléments dans le panier...
		for($i=0;$i<$nbprod;$i++)
		{
			// on fait une boucle qui va passer en revue chaque produit du panier
			// pour voir si le produit que l'on veut rajouter existe déja
			if($panier[$i]['prod'] == $_GET['prod'])
			{
				// le produit existe...
				$prodin = "true";
				// inscrit dans une variable que le produit existe...
				$prodline = $i;
				// et on précise aussi quel est son emplacment dans le caddie
			}
		}
		if(isset($prodin) && $prodin == "true")
		{
			// si le produit existe déja...
			// ...la quantité précédente est effacée...
			array_splice($panier,$prodline,1);
			// ...pour laisser place à celle qui le client vient de rajouter...
			array_push($panier,array("prod" => $_GET['prod'],"qtte" => $_GET['qtte']));
		}
		else
		{
			// sinon on rajoute le produit dans le panier tt simplement...
			array_push($panier,array("prod" => $_GET['prod'],"qtte" => $_GET['qtte']));
		}	
		header("Location: prof_commandes.php");
		// on peut faire une redirection vers une page qui va faire la liste de tous les produits...
	}
	else
	{
		// si le panier n'existe pas...
		session_register('panier');
		// on le créer...
		$panier = array ();
		// on rajoute le produit et la quantité...
		array_push($panier,array("prod" => $_GET['prod'],"qtte" => $_GET['qtte']));
		// le panier à été crée...
		header("Location: caddie_list.php");
		// on peut faire une redirection vers une page qui va faire la liste de tous les produits...
	}
}
else
{
	// les variable prod et qtte n'existent pas...
	header("Location: caddie_list.php");
}
?>
####################
<?php
// panier_update.php... ...sert à modifier la quantité d'un produit...
session_start();

if(isset($_GET['prod']) && isset($_GET['qtte']))
{
	// on vérifie qu'un produit et une 'nouvelle' quantité ont été spécifés...
	// si oui,
	if($_GET['qtte'] != 0)
	{
	// si la 'nouvelle' quantité est différente de zéro....
		$nbprod = count($panier);
		for($i=0;$i<$nbprod;$i++)
		{
		// on fait une boucle qui passe en revue chaque élément du panier...
			if ($panier[$i]['prod'] == $_GET['prod'])
			{
				// lorsque l'on tombe sur le produit à modifier,
				// on donne la valeur de la 'nouvelle' quantité à la quantité du produit dan sle panier...
				$panier[$i] = array("prod" => $_GET['prod'],"qtte" => $_GET['qtte']);
			}
		}
	}
	else
	{
		// si la 'nouvelle' quantité est égale à 0, ca revient au même que de supprimer...
		$nbprod = count($panier);
		for($i=0;$i<$nbprod;$i++)
		{
			// on fait une boucle qui passe en rebue tout le panier...
			if($panier[$i]['prod'] == $_GET['prod'])
			{
				// dès qu'on tombe sur la valeur à 'modifier'(ici en l'occurence il s'agit de supprmier ..)
				array_splice($panier,$i,1);
			}
		}
	}
	header("Location: caddie_list.php");
	// on redirige le client vers une page avec la liste de produits...
}
?>
############################
<?php
// caddie_del.php... ...sert à supprimer un élément du caddie...
session_start();

if(isset($_GET['prod']))
{
	// si un produit ets spécifié.;;
	$nbprod = count($panier);
	for($i=0;$i<$nbprod;$i++)
	{
		// on fait une boucle qui parcours le panier...
		if($panier[$i]['prod'] == $_GET['prod'])
		{
			// une fois arrivé au produit voulu, on le supprime...
			array_splice($panier,$i,1);
		}
	}
	header("Location: caddie_list.php");
	// on redirige le client vers une page qui liste les produits & les quantités...
}
?>
############################
// caddie_list.php ...sert à lister les produits du caddie
	if(session_is_registered('panier'))
	{
		if(is_array($panier))
		{
			$nbart = count($panier);
			if($nbart == 0)
			{
				echo "Votre panier est vide.<br>\n";
			}
			else
			{
				echo "Il y a des articles dans votre panier.<br><br>\n";
				echo "<table width=\"90%\" cellpadding=\"3\" align=\"center\" border=\"0\" cellspacing=\"0\"><tr bgcolor=\"#AE888C\"><td height=\"23\" align=\"center\" class=normalprof height=\"37\"><strong><font color=\"#FFFFFF\">Marques</font></strong></td><td align=\"center\" class=normalprof><strong><font color=\"#FFFFFF\">Nom du produit</font></strong></td><td align=\"center\" class=normalprof><strong><font color=\"#FFFFFF\">Quantité</font></strong></td><td align=\"center\" class=normalprof><strong><font color=\"#FFFFFF\">Modification</font></strong></td></tr>";
				for($i=0;$i<$nbart;$i++)
				{
					if(is_array($panier[$i]))
					{
						mysql_select_db($database_mysql_connect,$mysql_connect) or die(mysql_error());
						$getprodinfo = mysql_query("SELECT idproduit, marque, nom, prix, promoexiste, promotype, promored, promodatedebut, promodatefin FROM produits_tbl WHERE idproduit = '".$panier[$i]['prod']."'", $mysql_connect) or die(mysql_error());
						while($row_getprodinfo = mysql_fetch_array($getprodinfo,MYSQL_ASSOC))
						{
							$getmarque = mysql_query("SELECT marque FROM idmarques_tbl WHERE idmarque = '".$row_getprodinfo['marque']."'");
							$row_getmarque = mysql_fetch_assoc($getmarque);
							echo "<tr bgcolor=\"#FFFFFF\"><td align=\"center\" style=\"BORDER-BOTTOM: #AE888C 1px solid ; BORDER-LEFT: #AE888C 1px solid\" height=\"23\" class=normalprof>\n";
							echo "<form name=\"panier_update_form".$i."\" method=\"get\" action=\"prof_panier_update.php\">\n";
							echo $row_getmarque['marque']."</td><td align=\"center\" style=\"BORDER-BOTTOM: #AE888C 1px solid\" class=normalprof>".$row_getprodinfo['nom']."</td><td align=\"center\" style=\"BORDER-BOTTOM: #AE888C 1px solid\" class=normalprof> <input type=\"hidden\" name=\"prod\" value=\"".$panier[$i]['prod']."\">\n<input type=\"text\" size=\"2\" name=\"qtte\" value=\"".$panier[$i]['qtte']."\">  </td><td style=\"BORDER-BOTTOM: #AE888C 1px solid ; BORDER-RIGHT: #AE888C 1px solid\" class=normalprof align=\"center\" valign=\"bottom\"><a href=\"prof_panier_del.php?prod=".$panier[$i]['prod']."\">Retirer</a> || <a href=\"javascript:document.panier_update_form".$i.".submit()\">Modifier</a></form>\n</td></tr>";
							echo "</td></tr>";
						}					
					}
				}
				mysql_free_result($getprodinfo);
				echo "</table>";
			}
			echo "<div align=\"center\"><a href=\"prof_commandes_confirm.php\"><strong>Valider le panier</strong></a></div>";
			echo "<br><a href=\"prof_panier_clear.php\">Supprimer tous les produits du panier</a>";
		}
		else
		{
			echo "Votre panier est vide.<br>\n";
		}
	}
	else
	{
		echo "Votre panier est vide.<br>\n";
	}
	if(session_is_registered('continueachat'))
	{
		printf("<a href=\"%s\"Voir le dernier produit ajouté au caddie </a>",$continueachat);
	}
	else
	{
		echo "<br><a href=\"prof_marques.php\">? Nos marques</a><br><a href=\"prof_produits.php\">? Nos produits</a>";
	}

Conclusion :


Voilà...
J'avoue c'est un peu le bordel mais c'est la première que je poste :p:p
Il manque une page, c'est la page qui permet de lister les produits... je vais la mettre dès que j'ai le temps (d'ici 1-2 jours)...

Sinon ben il y a pas vrmt de bugs connus, ce script est utilisé sur un site ou les clients sont demandé de se 'logguer' pour pouvoir ajouter/modifier/supprimer des éléments du panier....

Il y a aussi quelques petites fonction relatives aux session que je vais arranger (pe session_register(), sess_is_registered()....etc..).
Je tiens à préciser que j'ai dévolppé ce script avec une configuration de php ou 'register_globals' était à 'on'...

Et une fois que j'aurai rajouté la 4eme page qui permet de lister le contenu du panier, je ferai un petit zip qui contiendra ces quatres fichier.

Voilà !

Rob.
(24/06-2004)

PS: commentaires, questions, remarques, n'hésitez pas !

----

Voila j'ai rajouté le 4eme et dernier script...Le quatrieme script parcours le tableua qui contient les ID produits et les QTT (quantité) de produits et va chercher les description prix etc.. des produits correspondant dans une base données.

@+

Rob.
(26/08/2006)

A voir également

Ajouter un commentaire

Commentaires

cs_lir
Messages postés
28
Date d'inscription
dimanche 19 janvier 2003
Statut
Membre
Dernière intervention
26 mars 2008
-
C mieux avec un zip
Alf3001
Messages postés
1
Date d'inscription
samedi 12 juillet 2003
Statut
Membre
Dernière intervention
28 août 2004
-
Salut,
code intéressant et très clair.
Pour tes développements futurs de ce code, pense également à l'ajout multiple de produits (plusieurs produits et plusieurs qte en une fois).
Egalement, ajoute d'autres paramatres comme par exemple un prod avec un id mais disposant de plusieurs couleurs......
Enfin, les fichiers update et delete seraient mieux s'ils étaient intégrés au code du panier avec éventuellement un rafraichissement par javascript car lorsque tu passes en paiement sécurisé, il est préférable d'avoir une seule page pour le traitement du panier.

Voila c'est juste quelques petites remarques sans prétention de donner une quelconque leçon. Ton code est très bien et super clair, mais ayant l'habitude de fabriquer des panier je te livre ici les "difficultés" auxquelles j'ai été confronté lors de mes développement.

Bravo
Alf
Gille59
Messages postés
23
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
7 octobre 2012
-
Bonjour
Je voudrais faire une petite "boutique en ligne"
rob85 tu présente trois scripts pour faire un panier, s'est bien ! mais moi qui suis novice, comment faire qu'en cliquant sur un article, ça aille dans le panier ? Voir le panier etc. Quel lien ou qu'est qu'il faut faire ?

logcimaison@hotmail.com

MERCI
Cordialement
punkstory
Messages postés
6
Date d'inscription
jeudi 12 février 2004
Statut
Membre
Dernière intervention
5 octobre 2004
-
Bonjour,

Je ne comprend pas comment activer tt ce system. Dans les scripts il y a des nom de pages php. une list et une commande : que mettre dedans ? La premiere page, celle qui permet de mettre tt en place : comment la creer ? ou est elle?

Ya pas besoin de base de donnée MySql?

merci
hargonix
Messages postés
1
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
11 novembre 2004
-
salut,

ton systeme de caddies est bien mais j'aeimerai savoir si tu a mis la 4ème page qui manque merci.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_rob85)