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")