Créée le, 19/06/2015

 Mise à jour le, 19/05/2019

Visiteurs N°  




Accueil
Nouveau Blog Nouveautés Moteur de Recherche Votre Caddie Pour Vos Achats Votre Espace Membre Vos Signets et Vos Jeux Préférés Page de Bienvenue Statique Site en Français Site en Anglais
Sommaires
Électronique Fondamentale Technologie Fondamentale Testez vos Connaissances Électronique Théorique Digitale Électronique Pratique Digitale Lexique Électronique Numérique Data book TTL Data book CMOS Dépannage TVC Mathématique
Micro-ordinateurs
Théorique des Micro-ordinateurs Testez vos Connaissances Pratique des Micro-ordinateurs Glossaires sur les Ordinateurs
Physique
La lumière Champ d'action Rayonnement Électromagnétique
Technologies
Classification des Résistances Identification des Résistances Classification des Condensateurs Identification des Condensateurs
Formulaires Mathématiques
Géométrie Physique 1. - Électronique 1. 2. - Électronique 1. 3. - Électrotechnique 1. 4. - Électromagnétisme
Accès à tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages N. B. M. - Tome I - 201 Pages E. T. M. - Tome I - 554 Pages Business à Domicile Ouvrages 34 pages gratuits Nos E-books Logiciel Géométrie Logiciel Composants Électroniques
Aperçu de tous nos Produits
E. T. F. - Tome I - 257 Pages E. T. F. - Tome II - 451 Pages E. T. F. - Tome III - 611 Pages E. T. D. - Tome I - 610 Pages E. T. M. - Tome I - 554 Pages Logiciel Géométrie Logiciel Composants Électroniques
Nos Leçons aux Formats PDF
Électronique Fondamentale Technologie Fondamentale Électronique Théorique Digitale Électronique Pratique Digitale Théorique des Micro-ordinateurs Mathématiques
Informatique
Dépannage Win98 et WinXP et autres Dépannage PC Glossaire HTML et Programmes PHP et Programmes JavaScript (en cours de travaux) Création de plusieurs Sites
Forums
Forum Électronique et Infos Forum Électronique et Poésie
Divers et autres
Formulaire des pages perso News XML Statistiques CountUs Éditeur JavaScript Nos Partenaires et nos Liens Utiles Gestionnaire de Partenariat Nos Partenaires MyCircle Sondages 1er Livre d'Or 2ème livre d'Or

Signets :
  Leçons suivantes        Leçons précédentes     Bas de page
  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet

Sommaire - Implémenter un Caddie (1ère partie) :


Dans cette leçon, nous verrons comment implémenter les fonctionnalités de base d'un caddie. Nous ajouterons ce caddie à la base de données de chez Jean-Pierre, que nous avons implémentée dans une de nos leçons. Nous explorerons également une autre solution : la configuration et l'utilisation d'un caddie PHP qui existe déjà en Open Source, et que nous nous sommes inspiré de ce dernier malgré certaines erreurs sur le Net concernant la programmation.

Si vous ne connaissez pas le principe d'un caddie électronique (que l'on appelle également parfois une carte d'achat, ou un panier d'achat), il s'agit d'un mécanisme permettant d'effectuer des achats en ligne. Au fur et à mesure que vous parcourez le catalogue en ligne d'un site, vous pouvez ajouter des articles dans votre caddie. Lorsque vous avez fini vos achats, il suffit de sortir du magasin en ligne, et de régler les articles qui se trouvent dans votre caddie.

Pour implémenter notre caddie, nous avons besoin des fonctionnalités suivantes :

Petite_Main.gif  Une base de données des produits que nous voulons vendre en ligne ;

Petite_Main.gif  Un catalogue en ligne de nos produits, listés par catégorie ;

Petite_Main.gif  Un caddie pour conserver une trace des articles que l'utilisateur souhaite acheter ;

Petite_Main.gif  Un script de sortie qui s'occupe du paiement et des détails de la transaction ;

Petite_Main.gif  Une interface d'administration.

Le problème :

Vous vous souvenez probablement de la base de données de chez Jean-Pierre que nous avons développée dans une de nos leçons à partir de cette adresse URL : en cliquant ici. Dans ce projet, nous allons implémenter et mettre en œuvre le magasin en ligne de chez Jean-Pierre. Voici le cahier des charges de ce système :

Petite_Main.gif  Il nous faut un moyen de connecter la base de données au navigateur de l'utilisateur. Les utilisateurs doivent être capables de parcourir les articles par catégorie.

Petite_Main.gif  Les utilisateurs doivent également être capables de sélectionner des articles dans le catalogue, pour pouvoir les acheter plus tard. Nous devons conserver une trace des articles sélectionnés.

Petite_Main.gif  Lorsque les utilisateurs ont terminé leurs achats, nous devons calculer le montant total de leur commande, enregistrer les détails de la commande (comme l'adresse de la livraison) et traiter le paiement.

Petite_Main.gif  Il nous faut également construire une interface d'administration pour le site de chez Jean-Pierre, afin que l'administrateur puisse ajouter et modifier certaines informations de ces articles concernant les ouvrages, ainsi que des catégories de livres que les administrateurs peuvent ajouter ou supprimer par la suite ...

Implémenter un catalogue en ligne :

Essayons maintenant de trouver une solution pour chaque partie à implémenter.

Nous possédons déjà une base de données pour le catalogue de chez Jean-Pierre. Cependant, nous devons y apporter quelques modifications pour cette application. Il faudra notamment ajouter des catégories de livres, comme nous venons de le voir.

Il faudra aussi ajouter certaines informations dans notre base de données, pour les adresses de paiement, les détails des transactions, etc. ...

Nous savons déjà comment implémenter une interface vers une base de données MySQL à l'aide de PHP, donc cette partie devrait être assez simple.

Conserver une trace des achats effectués par l'utilisateur :

Nous avons pour cela deux techniques à notre disposition. La première consiste à ajouter les sélections effectuées dans notre base de données, et l'autre passe par l'utilisation d'une variable de session.

L'utilisation d'une variable de session est plus simple à écrire, puisqu'elle ne monopolise pas en permanence la base de données. Cela nous évite aussi de saturer la base de données avec des informations inutiles, si les utilisateurs effectuent des sélections et s'ils quittent le site avant de passer une commande.

Nous avons besoins par conséquent d'implémenter une variable de session, ou un ensemble de variables pour enregistrer les sélections d'un utilisateur. Lorsqu'un utilisateur a fini de sélectionner ses acticles et qu'il passe à la caisse, nous ajoutons ces informations dans notre base de données pour conserver une trace de la transaction.

Nous pouvons également nous servir de ces données pour résumer l'état actuel du crédit dans un coin de la page, de sorte que l'utilisateur sache en permanence ce qu'il a déjà sélectionné.

Paiement :

Dans ce projet, les utilisateurs se contentent de sélectionner des articles et de saisir les informations nécessaires pour la commande. Nous ne traiterons pas réellement les paiements. Il existe un grand nombre de systèmes de paiement en ligne, et leurs implémentations sont toutes différentes. Nous nous contenterons donc d'écrire une fonction de base, qui pourra être remplacée par une interface vers le système de votre choix. Toutefois, nous vous aiderons pour le paiement via PayPal concernant les paramètres que l'on verra par la suite de cette leçon mais, vous devrez ouvrir un compte de votre choix, on ne peut choisir pour vous !

Les systèmes de paiement sont généralement vendus spécifiquement pour chaque pays. Les interfaces de traitement en temps réel fonctionnent la plupart du temps de la même manière. Il faut notamment se procurer un compte commercial auprès d'une banque pour pouvoir accepter les cartes de crédit. Le fournisseur de votre système de paiement vous spécifiera les paramètres que vous devrez passer à son système.

Le système de paiement transmet vos informations à une banque, et renvoie un code de résultat ou d'identification qui indique le succès de la transaction ou une erreur. En échange de cette transmission d'informations, votre passerelle de paiement vous facturera une somme basée sur une charge mensuelle ou annuelle selon les fournisseurs, ainsi qu'une taxe basée sur le nombre ou la valeur de vos transactions. Certains fournisseurs de systèmes de paiement vous font même payer en cas de transaction annulée.

Le système de paiement choisi aura besoin d'informations sur le client (comme son numéro de carte de crédit ou bancaire), ainsi que les informations permettant de vous identifier pour connaître le compte commercial à créditer, et du montant total de la transaction.

Le montant total de la commande se trouve déjà dans la variable de session du caddie de l'utilisateur. Nous enregistrons les détails de la commande dans la base de données, et nous pouvons donc nous débarrasser de la variable de session à partir de ce moment-là. Car, il ne faut jamais enregistrer les numéros de carte bancaire dans une base de données pour éviter, en cas de fraude ou d'anomalie de dysfonctionnement d'une base de données, cela implique une responsabilté pour toute personne administrateur système, en cas de fraude donc à ses risques et périls.

Interface d'administration :

En plus de tout cela, nous devons implémenter une interface d'administration nous permettant d'ajouter, de supprimer, et de modifier les livres et les catégories de livres dans la base de données.

Par exemple, il peut être nécessaire de modifier le prix d'un article, notamment en période de promotion. Cela signifie que lorsque nous enregistrons la commande d'un client, il faut enregistrer le prix de l'article commandé. La gestion de ce site deviendrait rapidement très complexe si nous nous contentions d'enregistrer les articles commandés par chaque client, et le prix de chaque article, indépendamment. Cela signifie également que si le client souhaite de nous renvoyer un article ou l'échanger, nous pouvons lui fournir un bon de commande de la somme correspondante.

Dans ce projet, nous n'implémenterons aucune interface de suivi de commande. Nous vous laissons le plaisir d'en ajouter une sur ce système de base, en fonction de vos besoins.

Présentation de la solution :

Nous allons maintenant assembler tous les composants nécessaires de notre projet.

Notre système peut être considéré, en fonction de deux points de vue différents : le point de vue de l'utilisateur et le point de vue de l'administrateur. Après avoir étudié les fonctionnalités nécessaires, nous avons pu mettre en place deux architectures différentes, une pour chaque point de vue. Elles sont présentées aux figures 1 et 2, respectivement.


Caddie_Utilisateur.png

Caddie_Administrateur.png

Dans la figure 1, nous présentons les principales relations entre les scripts de la partie utilisateur de ce site. Les clients arrivent d'abord sur la page principale, qui présente la liste de toutes les catégories de livres vendus sur le site. A partir de là, les clients peuvent aller sur la page dédiée à chaque cétégorie de livres, et ensuite sur la page de chaque livre appartenant à cette catégorie.

Il faut fournir à l'utilisateur un lien permettant d'ajouter un livre dans son caddie. A partir du caddie, le client doit pouvoir sortir du magasin et passer sa commande.

La figure 2 représente l'interface de l'administrateur, qui contient plus de scripts, mais moins de code. Ces scripts permettent à un administrateur d'ouvrir une session et de travailler sur les livres et les catégories.

Le moyen le plus simple pour implémenter les manipulations sur les livres et sur les catégories de livres consiste à afficher une version légèrement différente de l'interface de l'utilisateur. L'administrateur sera toujours capable de parcourir les catégories et les livres, mais au lieu d'accéder au caddie, l'administrateur pourra manipuler les livres et les catégories. En modifiant les scripts pour qu'ils puissent s'adapter à la fois aux administrateurs et à ses clients, nous pouvons économiser beaucoup de temps et beaucoup d'efforts.

Voici les trois modules de code principaux de cette application :

Petite_Main.gif  Le catalogue ;

Petite_Main.gif  Le caddie et le traitement des commandes (nous les avons placés dans le même module parce qu'ils ont beaucoup de points communs) ;

Petite_Main.gif  L'administration.

Comme dans le projet précédent, nous allons également implémenter et utiliser plusieurs bibliothèques de fonctions. Pour ce projet, nous utiliserons une API de fonctions analogue à celle du projet précédent. Nous tenterons de confiner la partie de notre code qui génère une sortie HTML dans une seule bibliothèque, pour nous conformer au principe de séparation de la logique et du contenu, et surtout pour que notre code soit plus simple à lire et à maintenir.

Nous devons également apporter quelques modifications mineures dans la base de données de chez Jean-Pierre. Nous avons renommé cette base de données en book_sc_livre (pour Shopping Cart, c'est-à-dire carte d'achat, ou caddie), afin de la différencier de celle que nous avons implémentée dans une de nos leçons, à savoir "Authentifier les Utilisateurs et personnaliser le site" à cette URL, en cliquant ici.

Tous les fichiers en langage PHP, que nous verrons par la suite de ce projet se trouvent dans le tableau 1 contient donc, un résumé de ces fichiers, en respectant la casse.

Cependant, nous avons regroupé tous les fichiers au format ZIP, (il suffit de les décompresser) afin que vous puissiez les télécharger avec ou sans carte bancaire concernant le caddie.

Avec Carte Bancaire, en cliquant ici. [Exemple 1].

Sans Carte Bancaire, en cliquant ici. [Exemple 1 - bis].

Pour visualiser l'aperçu, en cliquant ici. [Exemple 1 - ter].


Tableau 1. - Les fichiers de l'application "Shopping Cart Livre", en respectant la casse.
Nom Module Description
index.php Catalogue Page d'accueil du site pour les utilisateurs. Affiche la liste des catégories du système. 
show_cat.php Catalogue Affiche tous les livres d'une catégorie particulière.
show_book.php Catalogue Affiche les détails d'un livre particulier.
show_cart.php Caddie Affiche le contenu du caddie. Également utilisé pour ajouter des articles dans le caddie.
checkout.php Caddie Affiche les détails complets de la commande. Récupère les détails de la transaction.
purchase.php Caddie Récupère les détails de paiement de l'utilisateur.
process.php Caddie Traite les détails de paiement et ajoute la commande dans la base de données.
login.php Administration Permet aux Administrateurs d'ouvrir une session et d'apporter des modifications.
logout.php Administration Permet aux Administrateurs de fermer une session.
admin.php Administration Menu principal d'administration.
change_password_form.php Administration Formulaire permettant aux Administrateurs de modifier leur mot de passe.
change_password.php Administration Modifie le mot de passe des Administrateurs.
insert_category_form.php Administration Formulaire permettant aux Administrateurs d'ajouter une nouvelle catégorie dans la base de données.
insert_category.php Administration Insert une nouvelle catégorie dans la base de données.
insert_book_form.php Administration Formulaire permettant aux Administrateurs d'ajouter un nouveau livre dans le système.
insert_book.php Administration Insère un nouveau livre dans la base de données.
edit_category_form.php Administration Formulaire permettant aux Administrateurs de modifier une catégorie.
edit_category.php Administration Met à jour une catégorie dans la base de données.
edit_book_form.php Administration Formulaire permettant aux Administrateurs de modifier les détails d'un livre.
edit_book.php Administration Met à jour un livre dans la base de données.
delete_category.php Administration Supprime une catégorie dans la base de données.
delete_book.php Administration Supprime un livre dans la base de données.
book_sc_fns.php Fonctions Ensemble de fichiers à inclure pour cette application.
admin_fns.php Fonctions Ensemble de fonctions utilisées par les scripts d'administration.
book_fns.php Fonctions Ensemble de fonctions permettant d'enregistrer et de lire les données d'un livre.
order_fns.php Fonctions Ensemble de fonctions permettant d'enregistrer et de lire les données d'une commande.
output_fns.php Fonctions Ensemble de fonctions permettant de sortir du code HTML.
data_valid_fns.php Fonctions Ensemble de fonctions permettant de valider les données d'entrée.
db_fns.php Fonctions Ensemble de fonctions permettant de se connecter à la base de données book_sc_livre.
config.php Fonctions Ensemble de fonctions permettant de se connecter à la base de données.
user_auth_fns.php Fonctions Ensemble de fonctions permettant d'authentifier les Administrateurs.
Book_SC.sql SQL Requêtes SQL pour initialiser la base de données book_sc_livre.
populate.sql SQL Requêtes SQL permettant d'insérer quelques données, en exemple dans la base de données book_sc_livre.
images Imagerie Répertoire d'images et schémas de catalogue.

Intéressons-nous maintenant à l'implémentation de chacun de ces modules.

Nous attirâmes votre attention que cette application contient beaucoup de code. Cependant, nous implémenterons essentiellement des fonctionnalités que nous avons déjà vues (en particulier au cours de notre leçon précédente), comme l'enregistrement et la lecture de données dans la base de données, et l'authentification des administrateurs. Nous passerons très rapidement sur ces parties, pour nous concentrer sur les fonctions du caddie.

Pour que le code de ce projet fonctionne tel qu'il est écrit, vous devez activer les guillemets magiques. Dans le cas contraire, vous devez vous servir de addslashes() pour enregistrer des données dans la base de données MySQL, et de stripslashes() pour les récupérer.

Vous pouvez activer les guillemets magiques pour chaque dossier à l'aide d'un fichier .htaccess en spécifiant la directive php_value magic_quotes on (pour PHP 4), ou php3_magic_quotes_gpc on (pour PHP 3), etc. ...

Nous terminons ainsi ce premier chapitre de cette leçon, et nous verrons dans le prochain, L'implémentation de la base de données, l'implémentation du catalogue en ligne, liste des livres d'une catégorie et bien d'autres encore ...



  Cliquez ici pour la leçon suivante ou dans le sommaire prévu à cet effet.   Haut de page
  Page précédente   Page suivante







Nombre de pages vues, à partir de cette date : le 23 MAI 2019

compteur de visite

    




Envoyez un courrier électronique à Administrateur Web Société pour toute question ou remarque concernant ce site Web. 

Version du site : 10. 5. 14 - Site optimisation 1280 x 1024 pixels - Faculté de Nanterre - Dernière modification : 19 MAI 2019.   

Ce site Web a été Créé le, 14 Mars 1999 et ayant Rénové, en MAI 2019.