Réalisation pas à pas d'un "panier d'achats", brique indispensable de tout site de commerce électronique.
(3
novembre 2003)
Définition
des actions
Lors de l'utilisation d'un caddie, l'utilisateur à quelques
commandes de base : ajouter un produit dans le caddie (utilisé
pendant le parcours du catalogue), retirer un produit de la commande
(utilisé lors de l'affichage final), actualiser le caddie
(idem, affichage final - pour les clients qui voudraient ajouter
ou enlever des produits) et enfin, valider la commande. Chacune
de ses commandes fera l'objet d'un script au sein de notre application.
1) Ajouter
Nous partons du principe que nous sommes dans le catalogue, et que
plusieurs produits sont affichés. L'affichage des produits
est bien entendu dynamique (selon la recherche ou la rubrique),
et n'est pas abordé par cet article - nous vous recommandons
la lecture de notre article sur l'utilisation
de l'Objet dans PHP.
On veut que toute l'interaction se
fasse à partir du lien situé sous le texte Ajouter:
quand on le clique. On veut de plus que les références
du produit de ce champ (son id et la quantité souhaitée)
soient ajoutées à notre variable $liste[][],
et que le catalogue s'affiche à nouveau, à la même
page, avec la valeur des quantités mises à jour. Ce
lien renvoie donc sur la même page catalogue.php.
Nous laissons les calculs et affichages
des totaux, qui ne font qu'utiliser les même méthodes
que pour l'affichage du catalogue, l'arithmétique en plus.
L'affichage des quantités dans le menu déroulant est
intelligemment géré par l'utilisation de "selected".
for ($i=0; $i < count($_SESSION['achats']);
$i++)
{
// code MySQL allant chercher les informations pour chaque produit
// en fonction de $_SESSION['achats'][$i]['id']
?>
<select name="qte<?=$i"?>">
<option value="1" <?=($_SESSION['achats'][$i]['qte']
== 1 ? "SELECTED" : null;?>
</option>
<option value="12"
<?=($_SESSION['achats'][$i]['qte']
== 2 ? "SELECTED" : null;?>
<!-- etc. -->
</option>
</select>
<?}
Nous travaillons toujours avec nos
variables de session : pour supprimer un élément de
$_SESSION['achats'], il nous faut
la parcourir, à la recherche de l'id
du produit à supprimer. Notre lien Mettre A Jour sera de
la forme suivante :
4) Valider
Cette dernière commande renvoi la page d'affichage final,
où l'utilisateur ne peut plus modifier sa liste d'achats,
ni revenir en arrière. Les valeurs sont sauvées dans
la base MySQL, sur le schéma suivant :