Site de e-commerce Quels langages pour cela ? Le langage PHP L
Transcription
Site de e-commerce Quels langages pour cela ? Le langage PHP L
Systèmes d'informations Exemple : Site de e-commerce Quels langages pour cela ? ¾ Bases ¾ L'utilisateur de données : Articles en ventes • Clients + commandes / factures ne peut pas accéder directement aux BD • C'est un ensemble d'outils pour stocker / gérer / diffuser des informations / des données ¾ ¾ Le stockage : Bases de données + SGDBR ¾ La gestion : Saisie, Mise à jour, Contrôle ¾ faut transiter par un serveur Web ÖAffichage du catalogue sur le Web • Extraction et affichage des données • Outils de recherche + formulaires ¾ Diffusion ¾ Le ÖAlertes client passe commande : Ajout de données dans la table "commandes" • Diffusion de la commande au service expédition • Suivi du paiement ¾ Plusieurs • 1 Programmation avancée serveur accède aux données et déclenche des actions ÖRequêtes ¾ Un La diffusion : Catalogue, Sites Web, Services spécifiques Programmation avancée ¾ Il sur le SGDBR au services d'expédition / de facturation langages possibles coté serveur : ÖPHP (Apache, ...) (IIS, ...) ÖProgrammes CGI : C/C++, Perl, Python ÖASP 2 Programmation avancée Le langage PHP L'architecture Client/Serveur en PHP Insertion dans un document HTML ¾ Généralités ¾ Le ¾ Le ¾ Liaison • avec un serveur de base de données ¾ Génération ¾ Réception ¾ Insertion client demande une URL classique : Le serveur envoie un fichier HTML document HTML doit avoir l ’extension ".php" et doit être ouvert via un serveur Web (http://…) ¾ Pour ¾ Le client demande une URL contenant du PHP : Le serveur exécute le script • Le serveur peut accéder à des fichiers, des BD • Le serveur envoie les résultats sous forme HTML d'une page d’après une BD de données reçues dans une BD ¾ ou <?php instruction1; instruction2; ?> ¾ Conséquences Öle Öle Programmation avancée 4 client n'a pas à connaître PHP client ne voit pas les scripts PHP, mais leurs résultats Programmation avancée insérer un script : <? print("coucou"); ?> • de données provenant d'un formulaire 5 Programmation avancée Les variables Les tableaux Lire les valeurs d'un tableau ¾ Les ¾ Ils ¾ Lire ¾ Il noms de variables commencent tous par "$" existe 4 principaux types de variables : integer (entiers) : • sont définis de 2 façons : d'un bloc : • case par case (avec l'indice précis) : $i = 4; • $x = 4.2; $y = 1.035e-3; • • Programmation avancée // // // // taille du tableau et la création des cases vides sont gérées automatiquement 7 Programmation avancée plusieurs cases et remplir une liste de variables : list($num,$nom) = $t; comme résultat d'une fonction (ex : requête SQL) ¾ La array (tableaux) une seule case et placer sa valeur dans une variable : $t = array("1","Dupond","Paris"); string (chaînes de caractères) : $nom = "Dupond"; • ¾ Lire $tab[0] = "Lundi"; $tab[3] = "Mardi"; float (réel = nombres à virgule flottante) : 6 $x = $tab[8]; $tab = array("Lundi","Mardi",…); • 3 8 résultats $num = "1"; $nom = "Dupond"; la valeur "Paris" n'est pas lue Programmation avancée 9 Définir une fonction Structure d'un programme La diffusion d'information ¾ Mot ¾ Identique ¾ Pour clé "function" + nom des arguments + instructions : function affiche($nom,$prénom) { print("Nom = $nom<BR>"); print("Prénom = $prénom<BR>"); } ¾ Appelle au langage Java / JavaScript / C : conditionnelles simples : • alternatives : if (condition) { instructions; } else { instructions; }; de la fonction avec des valeurs : • Nom = Dupond<BR>Prénom = Jean<BR> 10 • while (conditions) { ... }; • Programmation avancée Exécuter une requête ¾ Connexion ¾ On $c = pg_connect("host=nom-du-serveur dbname=nom-de-la-base user=nom-de-login password=mot-de-passe"); • • exécute une requête SQL à travers la connexion crée : if (!$result) { print("Erreur dans la requête.");... } Afficher le résultat d'une requête Programmation avancée 14 faut faire une boucle pour afficher chaque ligne : ¾ Il list($titre,$prix) = pg_fetch_row($result,$i); print("$titre $prix<BR>"); faut extraire les données ligne par ligne : } list($case1,$case2,…,$caseN) = pg_fetch_row($result,$i); Programmation avancée Programmation avancée 15 for ($i=0;$i<$nlignes;$i++) { list($titre,$prix) = pg_fetch_row($result,$i); print("<TR><TD>$titre</TD>"); print("<TD ALIGN='RIGHT'>$prix</TD></TR>"); } for ($i=0;$i<$nlignes;$i++) { for ($i=0;$i < $n;$i++) { extraire les données de la ligne $i produire le HTML pour la ligne $i} $c = pg_connect("host=iuthaprojet dbname=biblio user=biblio"); print("<TABLE>"); print("<TR><TH>ISBN</TH><TH>Prix</TH></TR >"); $nlignes = pg_numrows($result); ¾ Il 12 Exemple pour afficher une table $result = pg_exec($, "SELECT titre,prix FROM livres;"); $nlignes = pg_numrows($result); Programmation avancée $result = pg_exec($, "SELECT titre,prix FROM livres;"); Exemple : affichage simple faut rechercher le nombre de lignes : afficher un pied de page fermer la connexion if (!$c) { print("Echec de la connection"); exit; } $result est un tableau à deux dimensions contenant la table résultant de la requête (éventuellement vide) • $result est nul si la requête a échoué : 13 : pour chaque ligne en forme HTML Exemple de requêtes • if (!$c) { print("Erreur de connexion.");… } ¾ Il 11 $result = pg_Exec($c,"requête SQL;"); la variable $c contient un numéro de connexion $c est nulle (booléen faux) si la connexion a échoué : Programmation avancée Ömise for ($i=6; $i<12; $i++) { ... }; Accéder à un serveur PostgreSQL à une base de donnée Öboucle boucles : le code HTML suivant : Programmation avancée diffuser des données sur une page Web en PHP, il faut : • se connecter à un serveur (PostgreSQL ici) • demander l'exécution d'une requête • afficher un entête • afficher les données : if (condition) instruction; affiche("Dupond","Jean"); ¾ Produit • print("</TABLE>"); 16 Programmation avancée 17 Programmation avancée 18 Recevoir des données sur le serveur Exemple de formulaire ¾ Envoi : créer un formulaire avec : action = l'URL du fichier contenant le script PHP • méthode = POST (ou GET pour débugger) • nommer tous les éléments du formulaire à lire • donner des valeurs aux boutons radio et choix ¾ Réception : dans le script PHP : une variable est créée par élément (elle porte son nom) • pour un groupe de bouton radio, une liste de choix : valeur de variable = "value" de l'élément choisi • 19 Réception et insertion dans une BD ¾ Connexion <BODY>Bonjour <? print($nom); ?> <BR>Vous avez <?php switch ($x) { case 0 : print("aucun enfant"); case 1 : print("1 enfant"); case 2 : print("2 enfants"); case 3 : print("3 enfants ou plus"); } ?> </HTML> <FORM ACTION="recept.php"METHOD="POST"> Nom : <INPUT TYPE="TEXT" NAME="nom"> <BR>Enfants :<BR> <INPUT TYPE="RADIO" NAME="x" VALUE="0"> aucun<BR> <INPUT TYPE="RADIO" NAME="x" VALUE="1"> 1<BR> <INPUT TYPE="RADIO" NAME="x" VALUE="2"> 2<BR> <INPUT TYPE="RADIO" NAME="x" VALUE="3"> plus </FORM> • Programmation avancée Exemple de réception : recept.php Programmation avancée 20 Exemple à la base de données <?php $c = pg_connect("host=iuthaprojet dbname=clients"); ¾ Exécution d'une requête de type "INSERT INTO" avec les variables contenant les données du formulaires reçues pg_exec($c, "INSERT INTO clients VALUES ( $nom,$x);"); ¾ Affichage d'un message de confirmation ou redirection vers une autre page du site ?> <H3>Inscription effectuées</H3> <A HREF="...">Retour à l'accueil</A> Programmation avancée 22 Programmation avancée 23 Programmation avancée 21