Introduction la programmation du Web Sebti Foufou 2222021
Introduction à la programmation du Web Sebti Foufou 2/22/2021 Prog. Web 1
Sommaire n n n n Le Web Serveurs Web Architecture du web Documents web Clients du web Programmation CGI Architecture CGI Principe de base du CGI Les formulaires Les échanges Client/Serveur Transmission des paramètres au serveur Actions du serveur Transmission du serveur au client 2/22/2021 Prog. Web 2
Le web n n Le World-Wide Web est un grand –très grand- système d’information réparti sur un ensemble de sites connectés par le réseau Internet Composition : • Un ensemble de documents hypertextes : textes, images, sons • • • vidéos etc. Les doc. de chaque site sont transmis sur le réseaux par l’intermédiaire d’un programme serveur Ce programme serveur dialogue avec un programme client qui peut être situé n’importe où sur le réseau. Le programme client prend la forme d’un navigateur grâce auquel l’utilisateur du Web peut demander et consulter très simplement les documents Protocoles : le dialogue entre le serveur et le client s’effectue selon des règles précises qui constituent un protocole. Le protocole du Web est http. On peut aussi communiquer avec un site via d’autres protocole comme par exemple le protocole FTP 2/22/2021 Prog. Web 3
Serveurs Web n Un site est constitué d’un ordinateur et un programme serveur tournant en permanence sur cet ordinateur. n Le serveur est en attente de requêtes transmises à son intention sur le réseau par un programme client n Quand une requête est reçue, le serveur l’analyse afin de déterminer quel est le document demandé, recherche ce doc. et le transmet au programme. client n Un client peut également transmettre des informations et demander au serveur de les conserver. Dans ce cas la réaction du serveur consiste tout simplement à informer le client que sa requête a été satisfaite ou non n Un autre type d’interaction consiste pour le client à demander au serveur d’exécuter un programme en fonction de certains paramètres et de lui transmettre le résultat 2/22/2021 Prog. Web 4
Architecture du web Requêtes Programme Client Internet Programme Serveur documents Documents Machine client Machine serveur 2/22/2021 Prog. Web 5
Documents web n n Ressources : les divers documents et informations qu’on peut échanger sur le web Document hypertexte : un texte dans lequel certains mots ou groupes de mots sont des liens ou ancres, donnant accès à d’autres documents URL (Universal Resource Location) : c’est l’un des principales mécanismes du web. Permet de faire référence de manière unique à un document. Une URL est constituée de plusieurs parties : • Le nom du protocole utilisé pour accéder à la ressource • Le nom du serveur hébergeant la ressource • Le numéro du port réseau sur lequel le serveur est à l’écoute • Le chemin d’accès, sur la machine serveur, à la ressource Exemple : http: //www. editions-oreilly. fr/mysqlphp. html Cette URL s’interprète de la manière suivante : Il s’agit d’un document accessible via le protocole HTTP, sur le serveur www. editions-oreilly. fr qui est à l’écoute sur le port 80 –numéro par défaut donc non précisé dans l’URL- et dont le nom est mysqlphp. html 2/22/2021 Prog. Web 6
Clients web n Les programmes clients du web sont dans la plupart des cas des navigateurs : Internet Explorer, Netscape, … n Les deux principales tâches d’un navigateur : • Dialoguer avec un serveur • Afficher à l’écran les documents transmis par le serveur n HTML (Hyper. Text Markup Language) : repose sur un ensemble de concepts : • Balises : un système de marquage permettant d’indiquer la fonction de chaque partie du texte (titre, entête de section, légende de figure, etc) • Les liens hypertextes : donnent la possibilité d’un parcours non séquentiel du document • Editeurs HTML : facilitent le travail de saisie des balises et donc la réalisation de documents HTML. On peut citer : – Dream. Weaver, Front. Page sous Windows – Quanta+ sous Linux 2/22/2021 Prog. Web 7
Programmation CGI n Avec HTML, on ne peut faire que des pages statiques. • Le contenu est fixé à l’avance et l’utilisateur ne dispose d’aucun moyen d’action pour sélectionner les informations qui l’intéressent. • La maintenance du site implique la manipulation d’un ensemble de pages HTML qui peuvent rapidement devenir très volumineux. n CGI (Common Gateway Interface) : Le principe consiste à produire les documents HTML par un programme spécialisé qui est associé au serveur web. Ceci est pour palier aux insuffisances de l’HTML n Le serveur transmet au programme CGI tous les paramètres dont il a besoin pour produire les pages. n Le CGI est la solution la plus ancienne, et sans doute la plus utilisée pour la production de pages web dynamiques n La programmation du site web avec PHP s’appuie pour tous les échanges client/serveur sur le protocole CGI 2/22/2021 Prog. Web 8
Architecture CGI Requêtes Programme Client Requêtes Programme Serveur CGI Documents Internet documents Documents Machine client Machine serveur 2/22/2021 Prog. Web 9
Principes de base du CGI n n Le navigateur (client) envoie une requête (souvent à partir d’un formulaire HTML qui fait déclencher une action (un programme CGI) sur le serveur L’exécution du CGI sur le serveur se déroule en trois phases : • Requête du client au serveur : Le serveur récupère les informations transmises par le navigateur : le nom du programme CGI et les paramètres saisis par l’internaute dans un formulaire • Exécution du programme CGI : Le serveur déclenche le programme CGI en lui fournissant tous les paramètres nécessaires • Transmission du document HTML : le programme CGI renvoie le résultat de son exécution au serveur sous forme d’une page HTML. Le serveur se contente alors de faire suivre au client n n Le programme CGI peut être écrit en n’importe quel langage : C, C++, Perl, Shell, etc. Que peut faire un programme CGI : • Recher et transmettre du texte, des images, … • Faire des contrôles, des calculs, des rapports • Accéder à une base de données pour insérer ou recher des informations (PHP, Mysql) 2/22/2021 Prog. Web 10
Les échanges client/serveur n Tous les paramètres saisis dans un formulaire doivent maintenant être transmis au serveur web ou, plus précisément au programme CGI sur ce serveur. Inversement ce programme doit produire un document (généralement un document HTLM) et le transmettre au navigateur via le serveur web n Exemple : • On stocke une liste de films (nom, année de réalisation, réalisateur, année de naissance du réalisateur) dans un fichier texte • On donne à l’utilisateur la possibilité de consulter cette liste : Pour afficher les informations de son film préféré, l’utilisateur doit faire sa requête dans un formulaire HTML qui permet de saisir un titre, un intervalle de dates et d’appliquer un ET ou un OU pour combiner ces deux critères • Le programme CGI va : – Récupérer les paramètres du formulaire – Accéder au fichier des films, et retenir ceux qui satisfont les critères de sélection – Produire une page HTML présentant la liste des films sélectionnés 2/22/2021 Prog. Web 11
Exemple : le formulaire <Html><head> <title> Formulaire pour programme CGI </title> </head><Body> <h 1> Formulaire pour programme CGI </h 1> <Form Action=‘http: //cartier. cnam. fr/cgi-bin/Ex. CGI 1’ Methode=Post> Ce formulaire vous permet d’indiquer des paramètres pour la recherche de films : <p> Titre : <Input Type=Text Size=20 Name=‘titre’> <p> Année début : <Type=Text Size=4 Name=‘an. Min’ Value=1900> Année fin : <Type=Text Size=4 Name=‘an. Max’ Value=2001> <p> <b>Comment combiner ces critères. </b> ET <Input Type=Radio Name=‘comb’ Value=‘ET’ Checked> OU <Input Type=Radio Name=‘comb’ Value=‘OU’> ? <p> <Input Type=Submit Value=‘Recher’> </Form> </Body></Html> 2/22/2021 Prog. Web 12
Transmission des paramètres au serveur n n Au moment ou l’utilisateur déclenche la recherche, le navigateur concatène dans une chaîne de caractères une suite de descriptions de forme nom. Champs=val. Ici nom. Champ est le nom du champs du formulaire. val est la valeur saisie. Les différents champs sont séparés par & et les caractères blancs sont remplacés par des + n Exemple : Si on saisit ‘Le saint’ dans titre, 1978 dans an. Min, 1980 dans an. Max et le ET logique, la chaîne est constituée de: titre=Le+Saint&an. Min=1978&an. Max=1980&comb=ET n Il existe alors deux manières de transmettre cette chaîne au serveur, selon que la méthode utilisée est GET ou POST • Méthode GET : la chaîne est placée à la fin de l’URL appelée, après un caractère ‘? ’. On obtiendrait dans ce cas : cgi-bin/Ex. CG 1? Le+Saint&an. Min=1978&an. Max=1980&comb=ET • Méthode POST : la chaîne est transmise séparément de l’URL. Cette méthode est souvent préférée car elle évite d’avoir à gérer des URL très longues 2/22/2021 Prog. Web 13
Actions du serveur n n Le serveur lance le prog. CGI et lui transmet un ensemble de paramètres (paramètres correspondant aux champs du formulaire + divers informations relatives au client qui a effectué la requête. Ces transmissions de paramètres se font essentiellement de 3 méthodes : • Variables d’environnement : Le serveur les interroge pour obtenir l’adresse Internet du client, le nom de la machine cliente, nom de l’utilisateur, … etc. Quand la méthode utilisée est GET, la variable d’environnement QUERY_STRING contient la liste des paramètres issus du formulaire. • Entrée standard (stdin) : Quand la méthode est POST les paramètres sont transmet sur l’entrée standard du programme CGI • Sortie standard (stdout) : Le document produit par le programme CGI, y compris les entêtes du protocole http qui sont habituellement pris en charge par le serveur, doivent être transmis sur la sortie standard du programme CGI 2/22/2021 Prog. Web 14
Transmission du serveur au client n n n Le CGI doit écrire le résultat sur sa sortie standard stdout qui par un mécanisme de redirection, communique directement avec l’entrée standard stdin du serveur. Le serveur transmet alors ce résultat au client Le résultat peut être un fichier : texte, image, son, … Le serveur se base sur l’extension de ce fichier pour déterminer son type. Le serveur transmet tel quel le résultat que lui fournit le programme CGI au prog. client Le prog CGI doit prendre en charge l’entête du document Un début typique d’un CGI est d’écrire l’entête d’un fichier HTML sur stdout: printf( « Contenent-type: text/htmlnn » ) ; printf( « <Title>Résultat</Title> » ) ; printf( « <Body Bgcolor=‘White’> » ) ; printf( « <h 1><Center>Résultat</Center></h 1> » ) ; 2/22/2021 Prog. Web 15
Limites de la programmation CGI n n n Passage de paramètres pénible à gérer, même si des nombreuses fonctions existantes amoindrissent cet inconvénient. On souhaite disposer directement dans le programme des variables correspondant aux champs du formulaire HTML Faible intégration avec HTML : le passage d’une solution HTML à une solution CGI est de type « tout ou rien » , car la programmation CGI n’est pas une extension de l’HTML Session : • Le serveur ne mémorise pas les demandes successives effectuées par un client particulier et ne peut donc pas tenir compte de l’historique des échanges pour améliorer la communication. • L’absence de connexions permanentes entre client et serveur web est un gros obstacle pour la gestion des sessions qui se déroulent dans un contexte riche, constitué d’un ensemble d’informations persistantes tout au long des communications client/serveur n Solutions : • Variables d’environnement • Paramètres dans l’URL • Cookies 2/22/2021 Prog. Web 16
Environnement My. SQL/PHP Sebti Foufou 2/22/2021 Prog. Web 17
Introduction n La programmation des sites web avec My. SQL/PHP est une variante des techniques CGI. n Dans cette programmation, la complexité est du coté du serveur, le client se contente de recevoir les documents html fournis par le serveur et de les visualiser n Exemple : Tout au long de ce cours, on prendra comme exemple une application très simple consistant à gérer sur le serveur une liste de films et à proposer aux utilisateurs de consulter une partie de ces films, sélectionnée selon des critères de recherche entrés dans un formulaire. 2/22/2021 Prog. Web 18
Apport de My. SQL et PHP n Les inconvénients de la programmation CGI découlent en premier lieu de l’utilisation directe des fichiers texte pour stocker les données : • Rigidité du format • Lourdeur d’accès aux données : pour la moindre consultation, il faut ouvrir le fichier, parcourir ses lignes, effectuer des tests, … • Manque de sécurité • Pas de contrôle de concurrence : Comment faire si plusieurs internaute accèdent simultanément à un même fichier n Utiliser un SGBD résoudra la plupart de ces problèmes n Dans ce cours, on utilisera le SGBD relationnel My. SQL 2/22/2021 Prog. Web 19
My. SQL n My. SQL consiste en un ensemble de programmes qui sont chargés de gérer une ou plusieurs bases de données et qui fonctionnent selon une architecture client/serveur Client mysqldump Serveur mysqld Connexion Client mysqlimport BDD Client Apache/PHP 2/22/2021 Prog. Web 20
My. SQL (2) n n Le serveur mysqld : Le seule processus qui peut accéder aux fichiers (à la base de données) pour lire et écrire des informations Utilitaires : ensemble de programme qui dialoguent avec le serveur par l’intermédiaire de connexions, pour accomplir un type de tâche particulier. • mysqldump : fait des sauvegardes • mysqlimport : peut importer des fichiers ASCII dans une base • Mysql : c’est l’utilitaire client le plus utile. Il permet d’envoyer directement des commandes au serveur n n n My. SQL : fournit également un ensemble de fonctions API écrites en langage C, qui peut être utilisé pour développer de nouveau client mysql Comme tous les autres clients, un script PHP doit établir une connexion avec mysql pour pouvoir dialoguer avec lui Bases de données relationnelles : l’information est représentée sous forme de tables (Oracle, Sybase, SQLServer, …) 2/22/2021 Prog. Web 21
PHP n n n Crée par Rasmus Lerdorf, fin 94, sa mise à la disposition des internautes a permis de le développer Qu’est ce que PHP : Langage de programmation proche du C, destiné à être intégré dans des pages html. Il est complètement dédier à la production des pages web dynamiques Php est du coté du serveur : les scripts PHP s’exécutent par un interpréteur situé du coté du serveur. L’interpréteur PHP est intégré à apache sous forme de module Mode d’exécution des scripts php : le serveur charge le fichier du script en mémoire et transmet toute la partie PHP à l’interpréteur. Ce dernier exécute le script ce qui a pour effet de produire une page html qui vient remplacer le script php dans le document finalement fournit au navigateur Améliorations PHP par rapport au CGI • On peut mixer html et php de manière très souple • Les variables formulaires sont accessibles directement dans PHP • Les scripts sont exécutés directement au sein d’apache, ce qui évite de lancer systématiquement un programme CGI 2/22/2021 Prog. Web 22
PHP : accès à My. SQL n L’accès est assuré par une architecture à trois composantes : • Le navigateur constitue l’interface graphique dont le rôle est de permettre à l’internaute de visualiser et d’interagir avec l’information • My. SQL est le serveur de données • Les fichiers PHP contenant le code d’extraction et de traitement des informations constituent le serveur d’applications. Ces fichiers PHP sont associés à apache qui se charge de transférer les documents produits sur l’Internet 2/22/2021 Prog. Web 23
Architecture d’un site web avec Mysql/PHP Requêtes Programme Client Programme Serveur Internet SQL Données Serveur mysql Documents Machine client Fichier PHP Base de données Machine serveur 2/22/2021 Prog. Web 24
Les bases de la Programmation Web Cas du langage PHP Sebti Foufou 2/22/2021 Prog. Web 25
Objectifs du cours n n Principe général de la programmation web Les entités du langage PHP • • • n Les balises Les variables Les formulaires Les structure de contrôle Les fonctions Fonctions PHP d’accès aux bases de données • Cas de Mysql 2/22/2021 Prog. Web 26
Prérequis n Notions de programmation n Notions de HTML n Notions de Bases de Données (SQL, …) 2/22/2021 Prog. Web 27
Principe général de la programmation web Serveur WEB (IIS, Apache) Pages HTML Client : Navigateur 2/22/2021 Prog. Web 28
Principe général de la programmation web Serveur Langage de scripts Moteur scripts SGBD Scripts Pages HTML Serveur WEB (IIS, Apache) Client : Navigateur 2/22/2021 Prog. Web 29
Quelques langages de scripts n n n Javascript VBscript ASP de Microsoft Perl CGI PHP 2/22/2021 Prog. Web 30
n n Php est un langage spécialisé dans la génération de code HTML. Il est utilisé pour le développement de sites internet. Le code php s’intègre au cœur même des pages HTML. Il permet de transformer des pages HTML en leur ajoutant un comportement dynamique Toutes les instructions php sont incluses dans une balise particulière, les autres instructions restent dans des balises html. 2/22/2021 Prog. Web 31
n Un fichier php (extension php ou php 3) peut contenir : • Uniquement du code html – Le code n’est pas interprété, – Le code est renvoyé tel quel au navigateur • Uniquement du code php – Le code est interprété – Le résultat d’interprétation est un code html renvoyé au navigateur • Du code html et du code php – Seul le code php est interprété – Le résultat, constitué de pages html existantes et générées, est renvoyé au navigateur 2/22/2021 Prog. Web 32
Les balises PHP n Trois façons de délimiter un code PHP dans une page Web • <? …. . ? > • <? php …. ? > • <script language=" php "> …. </script> n n Tout ce qui est en dehors de ces balises est directement envoyé au navigateur. Trois fonctions permettent d’envoyer des données vers le navigateur à partir d’un code php : – La fonction echo (c’est la plus ancienne et la plus populaire) – La fonction printf (permet de spécifier un format de sortie, A voir) 2/22/2021 Prog. Web 33
Les balises php (2) n Exemple de page html sans php (Fichier tablemult) <table border = 1> <tr> <td> 1 </td> <td> 2 </td> <td> 3 </td> </tr> <td> 2 </td> <td> 4 </td> <td> 6 </td> </tr> <td> 3 </td> <td> 6 </td> <td> 9 </td> </tr> </table> 2/22/2021 Prog. Web 34
Les balises php (3) n Exemple de page html avec php <html> …. <? /* creation d’une table de multiplication …*/ Print (" <table border=1> "); // debut de la table For ($i=1; $i<=12; $i++) { print (" <tr> "); // début de la ligne For ($j=1, $j <=12, $j++) { Print (" <td> "); Print($i * $j); Print(" </td> "); } Print(" </tr> "); // fin de la ligne Print (" </table> "); // fin de la table ? > … </html> 2/22/2021 Prog. Web 35
Les variables n Pas de déclaration de variables n Une variable PHP est toujours préfixée de $ • $nomvariable = 10; • $nomvariable = 6; Ces variables restent accessibles jusqu’à la fin du script. A partir de php 4, il est possible de supprimer une variable avant la fin du script : Unset($nomvariable) ; 2/22/2021 Prog. Web 36
Les variables (2) n Les références : • php permet d’exploiter les références aux variables pour accéder à la zone mémoire qui contient la valeur. La référence est désignée par le caractère & – – – n $a = 1 ; //$a a pour valeur 1 $b = &$a; // $b et $a pointent sur la même zone mémoire Echo " $a, $b " ; // affiche 1, 1 $a = 2 ; Echo " $a, $b" ; // affiche 2, 2 Les types de données : le type d’une variable est défini par la valeur qui lui est affectée. – – – Entier (int, integer) Décimal (real, double, float) Chaîne de caractères (string) Tableau (array) Objet (object) Booléen (bool, uniquement à partir de php 4) 2/22/2021 Prog. Web 37
Les variables (3) n Les constantes : il est possible de définir ses propres constantes. • define (" nom const ", " valeur ") Exemple : define(SERVEUR, " localhost ") ; define(NOM_UT, " Tahar ") ; • Une constante n’est pas précédée de $ • Deux constantes prédéfinies – _FILE_ : nom du fichier en cours d’interprétation – _LINE_ : numéro de la ligne courante n Portée des variables : 3 types de variables • Variable globale : variable visible dans tout le code d’une page php, persiste pendant le temps d’exécution de la page. • Variable locale : variable propre à une fonction, durée de vie ne dépasse pas le temps d’exécution de la fonction. • Variable static : variable propre à une fonction, persiste pendant tout le temps d’exécution de la page. 2/22/2021 Prog. Web 38
Les variables (4) n Exemple de variables globale et locale $a = 5; // $a est une variable globale. Function test ( ) { echo $a ; // affichage de la variable locale $a } test ( ) L’appel test() ne produit aucun résultat car $a est local. n Exemple de variables globales $a = 1; $b = 5 ; // $a et $b sont des variables globales Function somme () { Global $a, $b, $c ; $c = $a + $b ; } Somme( ); Echo $c; 2/22/2021 // $c vaut 6 Prog. Web 39
Les variables n Exemple de variable statique <? Function Increment ( ) { static $a = 0 ; $a++; Echo $a; } Increment () ; // Affiche 1 Increment ( ); // Affiche 2 Increment ( ); // Affiche 3 ? > n n Les tableaux : structure de données incontournable. Différentes possibilités pour la création de tableaux : – – – $tableau[0]=1; // tableau à 1 dimension. notez l’indice 0 $tableau[0][0]=1; tableau à 2 dimensions $tableau[rouge]=" red "; $tableau = array(0=>1, 1=>45); $tableau =array(" rouge "=> "red ", " bleu "=> "blue") • Utilisation de la fonction list 2/22/2021 Prog. Web 40
Les variables n Variables issues d’un formulaire • Les variables définies entre les tags FORM et /FORM sont accessibles à la page php référencée par l’attribut action. • Ces variables sont invariablement de type string. 2/22/2021 Prog. Web 41
Les formulaires - Rappels n Un formulaire est une interface enter un utilisateur et un serveur pour web pour la saisie des données. <Form method=" post-ou-get " action=" nom_script> Contenu du formulaire </form> n Le contenu peut inclure : – – – Des champs de texte Des boutons radio Des cases à cocher Des listes … 2/22/2021 Prog. Web 42
Contenu d’un formulaire n Champs de texte • Texte sur une ligne : type = " text " • Texte sur plusieurs lignes : type =" textarea " • Un mot de passe : type = " password " n Exemple <form method=" post " action = " … "> Indiquez votre nom : <input type=" text " name=" lenom "> <BR> Age : <input type=" text " name=age "> <input type=" submit "> </form> 2/22/2021 Prog. Web 43
Contenu d’un formulaire (2) n Boutons radio … Indiquez votre sexe : <input type=" radio " name=" sexe " value=" F "> F <BR> <input type=" radio " name=" sexe " value=" M "> M<BR> … n Cases à cocher : choix multiples … Choisissez une couleur : <input type=" checkbox " name=" rouge "> Rouge <BR> <input type=" checkbox " name=" vert " > Vert <BR> <input type=" checkbox " name=" bleu "> Bleu <BR> … 2/22/2021 Prog. Web 44
Contenu d’un formulaire (3) n Sélection d’une valeur dans une liste … Indiquez une couleur <BR> <select name=" couleur "> <Option> noir <option>rouge <option>vert </select> … 2/22/2021 Prog. Web 45
Les structures de contrôle n Les opérateurs logiques • • n AND ou && : $a and $b ou $a && $b OR ou || : $a OR $b ou $a || $b XOR : $a XOR $b NOT ou ! : not $a ou !$a Les opérateurs de comparaison • • • == != < > <= >= 2/22/2021 $a == $b $a != $b Prog. Web 46
Les structures de contrôle n Les tests : if … else if (condition 1) {Action 1} elseif (condition 2) {Action 2} else {Action 3} n n Une autre variante de cette syntaxe existe sans les accolades … A découvrire …. switch … case … default switch (var) { case valeur 1: Action 1; break; case valeur 2: Action 2; break; default: Action 3; } • L’instruction break permet d’ignorer les " cases " suivants. 2/22/2021 Prog. Web 47
Les structures de contrôle n While while (condition) {Actions} while (condition): Actions endwhile; n Do …. While do { Action } while (condition) n For for (expression 1; expression 2; expression 3) { Actions } 2/22/2021 Prog. Web 48
Les structures de contrôle n Exemple for ($i=1; $i<10; i++) { echo $i ; echo " | " ; } n Foreach : valable en php 4; permet le parcours de tableaux. • foreach ($tableau as $val) { actions} • foreach ($tableau as $cle =>$val) {actions} 2/22/2021 Prog. Web 49
Les structures de contrôle n Exemple $tab = array ( 5, 6, 7, 8); foreach ($tab as $i) { echo " $i "; } Le résultat est : – – n 5 6 7 8 La fonction each • Elle permet de parcourir tous les éléments d’un tableau. • Pour chaque élément du tableau, on retourne la combinaison clé-valeur • En fin de parcours, la fonction each retourne false 2/22/2021 Prog. Web 50
Les structures de contrôle n Exemple de each $tab=array(" val 1 ", " val 2 ", "val 3 "); While ($var = each($tab)) { // $var est nécessairement un tableau à 2 éléments Echo " $var[0] : $var[1] "; // affichage }; Résultat : – 0 : val 1 – 1 : val 2 – 2 : val 3 n La fonction list Elle est associée à la fonction each et permet d’affecter les éléments d’un tableau à des variables 2/22/2021 Prog. Web 51
Les fonctions n Syntaxe générale Function nom_fonction (paramètres) { … }; Les parenthèses sont obligatoires n Exemple de fonction simple <html> …. <? Function bonjour ( ) { echo " Bonjour " ; }; ? > <? Function bonjour 2 ( ) { Return " Bonjour " ; } ? > <? Bonjour( ) ; // affichage de bonjour Echo bonjour 2( ); // affichage de bonjour ? > … </html> 2/22/2021 Prog. Web 52
Les fonctions n Passage de paramètres par valeur <html> … <? Function bonjour 4($prenom, $nom) { $chaine = " bonjour $prenom $nom "; Return $chaine; }; Echo bonjour 4(" georges ", " Durand "); // affichage de bonjour geoges Durand ? > … </html> n Passage d’un tableau de paramètres <html> … <? Function bonjour 5 ($identite) { chaine = " bonjour $identite[0] $identite[1] "; Return $chaine; }; $idt = array(" georges ", " Durand "); Echo bonjour 5($id); // affichage de bonjour georges Durand ? > … </html> 2/22/2021 Prog. Web 53
Les fonctions n Passage de paramètres par référence • On passe à la fonction non pas la valeur mais l’adresse mémoire d’une variable et la fonction modifie directement la valeur de cette variable. n Exemple de passage de param par référence <html> … <? Function bonjour 6 (&$phrase) {$phrase = " Bonjour georges Durand " }; $chaine = " phrase qui va disparaître "; Bonjour 6 ($chaine); Echo $chaine; // affichage de bonjour Georges Durand ? > … </html> 2/22/2021 Prog. Web 54
Les fonctions n Passages par valeur et par référence <html> … <? Function bonjour 7(&$phrase, $prenom, $nom); {$phrase = " bonjour $prenom $nom "; }; Chaine = " phrase qui va disparaître "; Bonjour 7($chaine, " georges ", " Durand "); Echo $chaine; // affichage de bonjour georges Durand ? > … </html> 2/22/2021 Prog. Web 55
Les fonctions n Paramètres par défaut : ceratins paramètres peuvent être optionnels. <html> … <? Function bonjour 8($nom, $prenom=" Mr "); {$chaine = " bonjour $prenom $nom "; Return $chaine; }; Echo bonjour 8(" Durand "); // affiche "bonjour Msr Durand ? > … </html> Remarques : Il existe 2 types de fonctions : n • Fonctions intégrées au langage (Print, date, get. Env, …). Elles sont insensibles à la casse. • Vos propres fonctions, elles sont sensibles à la casse. Bonjour( ) # bonjour 2/22/2021 Prog. Web 56
Compléments sur les fonctions n Renvoyer plusieurs valeurs <? Function get. Values() { /* du code quelconque … */ Return array ($v 1, $v 2, $v 3); } ? > … <? List($poids, $prix, $couleur) = get. Values(); ? > 2/22/2021 Prog. Web 57
Les variables système n Les variables système sont des variables comme les autres à deux exceptions près : • Leur valeur est attribuée par le serveur. • On ne peut pas modifier ces valeurs n $PHP_AUTH_USER : contient le code utilisateur lorsque l’entrée dans le programme est protégée avec code d’accès et mot de passe $PHP_AUTH_PW : contient le mot de passe utilisateur lorsque l’entrée dans le programme est protégée avec code d’accès et mot de passe. Elle est utilisée conjointement avec la précédente $HTTP_USER_AGENT : contient le nom et la version du navigateur utilisé par l’internaute pour visualiser votre page. Elle est fort intéressante lorsque on veut utiliser des fonctions n’existant que pour certaines versions du navigateur $HTTP_ACCEPT_LANGUAGE : contient les code des différentes longues paramétrées dans le navigateur de l’internaute $REMOTE_ADR : contient l’adresse IP de l’internaute qui consulte la page Document_ROOT : contient le nom du répertoire physique contenant la page affichée (ie. Le répertoire ou se trouve le fichier sur le serveur) n n n 2/22/2021 Prog. Web 58
PHP - Suite Fonctions d’accès aux bases de données Sebti Foufou 2/22/2021 Prog. Web 59
Script PHP Oracle_f 1 Oracle_f 2 Oracle 2/22/2021 Script PHP Mysql_f 1 Mysql_f 2 Mysql Prog. Web Script PHP Pg_f 1 Pg-f 2 Postgres 60
Script PHP ODBC Driver oracle-odbc Oracle 2/22/2021 Driver mysql-odbc Mysql Prog. Web Driver postgresodbc Postgres 61
Fonctions d’accès aux bases de données Cas de Mysql 2/22/2021 Prog. Web 62
Source de données Mysql n Connexion et déconnexion • Mysql_connect(chaine_host, chaine_user, chaine_mot_de_passe); – Connexion non permanente au serveur – host : nom d’une machine qui héberge la BD – Cette fonction renvoie un identifiant (un entier) de connexion établie, sinon renvoie FALSE en cas d’échec. • Mysql_pconnect : idem que connect mais établit une connexion permanente • Mysql_select_db(chaine_bd, identiiant_connexion) – Identifiant est facultatif • Mysql_close(entier de connexion) – Fermeture d’une connexion 2/22/2021 Prog. Web 63
n Exemple … <? // connexion au serveur $mysql_link = mysql_connect (" castor ", " root ", "sesame "); // connexion à la base de données Mysql_select_db($mabase); … code php … mysql_close($mysql_link); … code php … ? > … 2/22/2021 Prog. Web 64
n Exécution d’une requête • Mysql_query(chaine_requete, entier_lien); – Lien est la base de données spécifiée. Argument optionnel pour utiliser la dernière connexion. – Cette fonction renvoie TRUE ou FALSE pour une requête create, drop, insert, delete ou update et un identifiant de résultat qui peut ensuite être exploité par d’autres fonctions php dans le cas d’un select. . n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" update empl set salaire = salaire*0. 2 "; $mysql_result = mysql_query($query, $mysql_link) ; Print (" Les salariés ont été mis à jour "); ? > 2/22/2021 Prog. Web 65
n Accès au résultat d’une requête non select • Mysql_affected_rows(entier_lien) – Cette fonction renvoie le nombre de lignes concernées par la dernière opération de mise à jour (insert, delete, update) n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" update emp set salaire = salaire*0. 2 "; $mysql_result = mysql_query($query, $mysql_link) ; //nombre d’employés mis à jour $nbre = mysql_affected_rows($mysql_link); Print (" $nbre employé(s) mis à jour "); ? > 2/22/2021 Prog. Web 66
n Nombre de lignes d’une requête select • Mysql_num_rows(entier_résultat) – Cette fonction renvoie le nombre de lignes de la requête exécutée par mysql_query. n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" select * from emp where salaire > 27000 "; $mysql_result = mysql_query($query, $mysql_link) ; //nombre d’employés sélectionnés $nbre = mysql_num_rows($mysql_result); Print (" $nbre employé(s) répondent au critère "); ? > 2/22/2021 Prog. Web 67
n Parcourir le résultat d’un select • Mysql_fetch_array(entier_resultat) – Cette fonction renvoie un tableau contenant une ligne du résultat du select. – Chaque appel récupère une ligne – Le dernier appel récupère FALSE – Chaque colonne récupérée est indexée par le nom du champ et par un indice (les champs sont numérotés à partir de 0). n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" select * from emp where salaire > 27000 "; $mysql_result = mysql_query($query, $mysql_link) ; //Affichage des noms des employés While ($row=mysql_fetch_array($mysql_result) { Print ($row[" name "]) }; ? > 2/22/2021 Prog. Web 68
n Parcourir le résultat d’un select • Mysql_fetch_row(entier_resultat) – Idem que mysql_fetch_array à la seule différence que les colonnes ne sont pas indexées par les noms de champ. – Cette fonction renvoie un tableau contenant une ligne du résultat du select. – Chaque appel récupère une ligne – Le dernier appel récupère FALSE – Chaque colonne récupérée est indexée par un indice (les champs sont numérotés à partir de 0). – Cette fonction est très conseillée 2/22/2021 Prog. Web 69
n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" select * from emp where salaire > 27000 "; $mysql_result = mysql_query($query, $mysql_link) ; //Affichage des noms des employés While ($row=mysql_fetch_row($mysql_result) { Print ($row[1]); } ? > 2/22/2021 Prog. Web 70
n Parcourir le résultat d’un select • Mysql_field_name(entier_resultat, entier_champ) – Cette fonction renvoie le nom d’un champ (colonne) – Champ est un indice supérieur ou égal à 0. n Exemple <? // connexion au serveur $mysql_link = mysql_connect(" castor ", " root ", "sesame "); // selection de la base Mysql_select_db($mabase, $mysql_link); $query=" select * from emp where salaire > 27000 "; $mysql_result = mysql_query($query, $mysql_link) ; $fields=mysql_num_fields($mysql_result); For($index=0; $index < $fields; $index++) { Print (mysql_field_name($index). " <BR> "); } ? > 2/22/2021 Prog. Web 71
Récapitulatif - Mysql Connexion Mysql_connect Déconnexion Mysql_close Choix d’ 1 base Mysql_select_db Exéc Requête Mysql_query Nbre de lignes non select Mysql_affected_rows Nbre lignes select Mysql_num_rows Accès 1 ligne select Mysql_fetch_array Mysql_fetch_row Nom d’ 1 colonne Mysql_field_name 2/22/2021 Prog. Web 72
Fonctions d’accès aux bases de données Cas d’ODBC 2/22/2021 Prog. Web 73
Source de données ODBC n Connexion et déconnexion • Odbc_connect(chaine_dsn, chaine_user, chaine_mot_de_passe); – Dsn : nom d’une source odbc – Cette fonction renvoie un identifiant (un entier) de connexion établie, sinon renvoit FALSE en cas d’échec. • Odbc_close(entier de connexion) – Fermeture d’une connexion 2/22/2021 Prog. Web 74
n Exécution d’une requête • Odbc_do(identifiant_connexion, chaine_requete); – Cette fonction renvoie un identifiant de résultat qui peut ensuite être exploité par d’autres fonctions php. • La fonction odbc_exec est un alias de la fonction odbc_do. n Exemple … <? // connexion à une base de données $connection = odbc_connect (" bdoct ", " simone ", "Canada "); … code php … Odbc_close($connection); … code php … ? > … 2/22/2021 Prog. Web 75
n Accès au résultat d’une requête select • Odbc_fetch_row(entier_résultat [, numéro_de_ligne]) – Cette fonction renvoie une ligne du résultat identifié par entier_résultat (renvoyé par odbc_do). – Numéro_de_ligne est optionnel. Quand il est omis, la fonction renvoie la prochaine ligne disponible – Pour récupérer toutes lignes d’un résultat, utilisez cette fonction dans une boucle. – La fonction renvoie False quand il n’y a plus de lignes dans le résultat. 2/22/2021 Prog. Web 76
n Exemple 1 <? $connection = odbc_connect(" bdoct ", "simone ", "Canada "); $query=" update catalog "; $query. = " set price = price*0. 5 "; $resultat = odbc_do($connection, $query); … Odbc_close($connection) …. ? > …. n Exemple 2 <? $connection = odbc_connect(" bdoct ", "simone ", "Canada "); $query=" select name, price from catalog "; $resultat = odbc_do($connection, $query); … // récupération des différentes lignes, voir suite Odbc_close($connection) …. ? > 2/22/2021 Prog. Web 77
n Nombre de ligne d’une requête • Odbc_num_rows (entier_resultat) – Cette fonction renvoie le nombre de lignes d’une requête select, delete, insert ou update. – Entier_resultat : identifiant renvoyé par odbc_do 2/22/2021 Prog. Web 78
n Nombre de champs d’une requête select • Odbc_num_fields(entier_resultat) – Cette fonction renvoie le nombre de colonnes du résultat. – Entier_résultat : identifiant renvoyé par odbc_do n Exemple <? $connection = odbc_connect(" bdoct ", "simone ", "Canada "); $query=" select name, price from catalog "; $resultat = odbc_do($connection, $query); Print (odbc_num_rows($resultat)); Odbc_close($connection) …. ? > 2/22/2021 Prog. Web 79
n Accès aux colonnes d’une ligne résultat • Odbc_result (entier_resultat, chaine_champ) – Entier_resultat : identifiant renvoyé par odbc_do – Chaine_champ : numéro ou nom de la colonne à récupérer n Exemple <? // connexion à une base de données $connection = odbc_connect (" bdoct ", " simone ", "Canada "); $query=" select name, price from catalog "; $result = odbc_do($connection, $query); While (odbc_fetch_row($result)) {$nom = odbc_result($result, 1); $prix = odbc_result($result, 2); Print (" $nom : $prix <BR> "); } Odbc_close($connection); … code php … ? > 2/22/2021 Prog. Web 80
n Affichage direct de toutes lignes d’une requête • Odbc_result_all (entier_resultat, chaine_format) – Cette fonction affiche sous forme d’un tableau HTML le résultat d’exécution d’une requête sql. – Entier_resultat : identifiant renvoyé par odbc_do – Chaine_format : il est optionnel. Il permet d’indiquer le format d’affichage de la table. Sa valeur est insérée dans le tag <table > n Exemple <? … $connection = odbc_connect(" bdoct ", "simone ", " Canada "); $query = " select name, price from calalog "; $resultat = odbc_do($connection, $query); Odbc_result_all ($result, " border=1 "); Odbc_close($connection); ? > 2/22/2021 Prog. Web 81
Récapitulatif - ODBC Connexion Odbc_connect Déconnexion Odbc_close Exécution requête Odbc_do Accès à 1 ligne Résultat Odbc_fetch_row Nombre de lignes d’ 1 requête Odbc_num_rows Nombre de champs d’ 1 requête Odbc_num_fields Accès aux colonnes d’ 1 ligne Odbc_result Affichage de toutes lignes Odbc_result_all 2/22/2021 Prog. Web 82
- Slides: 82