Title: Programmation WEB
1Programmation WEB
2Cas d'étude Panier
- On considère le problème suivant
- Afficher la liste des produits et choisir des
articles en les mettant dans le panier. - Gérer le panier ajouter/supprimer/modifier des
articles, calculer le prix.
3Remarques
- On supposera que tout utilisateur doit
s'authentifier préalablement (on connaîtra donc
son ID). - On supposera qu'un utilisateur aura un seul
panier.
4Plan du site
Page principale
f
a
f
a
Panier
Liste produits
5Étapes
- Afficher la liste des produits.
- Mémoriser le choix des produits.
- Travail avec le panier.
Bibliothèque
6La gestion des produits
- La BD.
- Le script correspondant (affichage et choix).
7La table produits
- produits(id, nom, prix, qmax, )
8liste_produits.php formulaire
Ajouter au panier
9Le code HTML(liste_form.php)
- ltform action"" method"post"gt
- lttablegt
- lttrgtlttdgtLaitlt/tdgtlttdgt0,8lt/tdgtlttdgtltinput
type"checkbox" name"choix" value"1"gtlt/tdgtlt/tr
gt - lttrgtlttdgtPainlt/tdgtlttdgt2lt/tdgtlttdgtltinput
type"checkbox" name"choix" value"2"gtlt/tdgtlt/tr
gt -
- lt/formgt
10Le code (liste_form.php)
- ltform action"" method"post"gt
- lttablegt
- SQL "SELECT FROM produits"
- res mysql_query(SQL)
- while (rowmysql_fetch_array(res))
- echo "lttrgtlttdgtrownomlt/tdgtlttdgtrowprixlt/tdgt
lttdgtltinput type'checkbox' name'choix'
value'rowprodid'gtlt/tdgtlt/trgt\n" -
- lt/tablegt
- ltinput type"submit" value"Ajouter au panier"gt
- lt/formgt
11liste_produits.php logique
- Vérification de l'envoi des données.
- Traitement des données reçus.
- Ou affichage de la liste des produits.
12liste_produits.php Initialisation
- lt?php
- include("auth.php")
- include("header.php")
- include("db_config.php")
- include("panier_lib.php")
-
- userid _SESSION"USERID"
- // connexion à la BD
13affiche_produits.php récupération
- if (!isset(_POST'choix')
- include("liste_form.php") exit()
-
- foreach (_POST'choix' as value)
- prodid mysql_real_escape_string(value)
- ajouter_panier(userid, prodid)
- p nom_produit(value)
- echo "Produit p ajouté"
-
- include("liste_form.php")
- // afficher le lien pour le panier
14Le panier (gestion)
- La BD.
- La bibliothèque des fonctions.
- Le script d'affichage et récupération.
15La table panier
- panier(userid, prodid, qte)
16La bibliothèque (panier_lib.php)
- ajouter_panier(userid, prodid)
- modifier_panier(userid,prodid,qte)
- supprimer_panier(userid,prodid)
- calculer_prix_prod(userid,prodid)
- calculer_prix_total(userid)
- vider_panier(userid)
17La bibliothèque (panier_lib.php)
- function ajouter_panier(userid, prodid)
-
- SQL"INSERT INTO panier VALUES('userid','pro
did','1')" - mysql_query(SQL)
-
18La bibliothèque (panier_lib.php)
- function modifier_panier(userid,prodid,qte)
-
- SQL"UPDATE panier SET qte'qte' WHERE
userid'userid' AND prodid'prodid'" - mysql_query(SQL)
-
19La bibliothèque (panier_lib.php)
- function supprimer_panier(userid,prodid)
-
- SQL"DELETE FROM panier WHERE
userid'userid' AND prodid'prodid'" - mysql_query(SQL)
-
20La bibliothèque (panier_lib.php)
- function calculer_prix_prod(userid,prodid)
- SQL"SELECT qteprix FROM panier p, produits
pr WHERE userid'userid' AND p.prodid'prodid'
AND p.prodidpr.id" - resmysql_query(SQL)
- return mysql_result(res,0)
-
21La bibliothèque (panier_lib.php)
- function calculer_prix_total(userid)
- SQL"SELECT SUM(qteprix) FROM panier p,
produits pr - WHERE userid'userid' AND p.prodidpr.id"
- resmysql_query(SQL)
- return mysql_result(res,0)
-
22La bibliothèque (panier_lib.php)
- function vider_panier(userid)
- SQL"DELETE FROM panier WHERE
userid'userid' " - mysql_query(SQL)
-
23Affichage et modification (show_panier.php)
3
2
6,4
Total
Modifier
Vider
24show_panier.php
- C'est un script qui ne comporte que l'affichage
du panier. - Alors il ne faut pas oublier de l'inclure où il
le faut.
25Affichage et modification (show_panier.php)
3
2
6,4
Total
Modifier
Vider
26Affichage de la ligne
- SQL "SELECT FROM produits pr, panier p WHERE
p.useriduserid AND pr.idp.prodid" - res mysql_query(SQL)
- while (rowmysql_fetch_array(res))
- echo "lttdgtrownomlt/tdgtlttdgtrowprixlt/tdgtlttdgt
ltinput type 'text' name'qte-rowprodid'
value'rowqte'gtlt/tdgtlttdgt".row'prix'row'q
te'."lt/tdgtlttdgtltinput type'checkbox'
name'choix' value'rowprodid'gtlt/tdgt\n"
27Les boutons
- ltinput type"submit" name"modifier"
value"Modifier"gt - ltinput type"submit" name"vider" value"Vider"gt
28Le code de la page d'affichage du panier
29Récupération
- if (!isset(_POST'modifier'
(!isset(_POST'vider' ) - include("show_panier.php") exit()
-
- if ( isset(_POST'vider' ))
- vider_panier(userid)
- include("show_panier.php") exit()
-
30Récupération (suite)
- if (isset(_POST'choix')
- foreach(_POST'choix' as value)
- prodid mysql_real_escape_string(value)
- supprimer_panier(userid,prodid)
-
31Récupération (suite 2)
- foreach(_POST as keygtqte)
- if (strpos(key,"qte-")0)
- prodid substr(key,4)
- prodid mysql_real_escape_string(prodid)
- qte mysql_real_escape_string(qte)
- modifier_panier(userid,prodid,qte)
-
-
- include("show_panier.php")