programmation PHP - Polytech`Lille, page Olivier Caron
Transcription
programmation PHP - Polytech`Lille, page Olivier Caron
PEIP 2 Bureau d’étude GIS Applications webs - programmation PHP Olivier Caron Polytech Lille Avenue Paul Langevin Cité Scientifique Lille 1 59655 Villeneuve d’Ascq cedex http://ocaron.plil.fr [email protected] Olivier Caron March 21, 2016 1/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données • Peut vérifier la cohérence des données à envoyer (ex:javascript) Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données • Peut vérifier la cohérence des données à envoyer (ex:javascript) • Les composants second niveau : Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données • Peut vérifier la cohérence des données à envoyer (ex:javascript) • Les composants second niveau : • Technologie choisie : langage de script PHP Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données • Peut vérifier la cohérence des données à envoyer (ex:javascript) • Les composants second niveau : • Technologie choisie : langage de script PHP • Gère le code métier (code applicatif) Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architectures 3-tiers • Les composants premier niveau : IHM • Fichiers html, formulaires html, serveur web. . . • Gère l’affichage, envoi et réception des données • Peut vérifier la cohérence des données à envoyer (ex:javascript) • Les composants second niveau : • Technologie choisie : langage de script PHP • Gère le code métier (code applicatif) • Les composants troisième niveau : les données (fichiers, bases de données, programmes) Olivier Caron March 21, 2016 2/29 PEIP 2 Bureau d’étude GIS Architecture web, technologies associées Navigateur Get fic.php Rendu :HTML+CSS Comportement:JavaScript Olivier Caron Serveur Web Html ou données (XML, Json) Module PHP March 21, 2016 3/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web • S’insère dans du code html (balise <?php). Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web • S’insère dans du code html (balise <?php). • Pas de contrôle de type (du script, quoi. . . ) Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web • S’insère dans du code html (balise <?php). • Pas de contrôle de type (du script, quoi. . . ) • Des structures de contrôle (if, while, for) Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web • S’insère dans du code html (balise <?php). • Pas de contrôle de type (du script, quoi. . . ) • Des structures de contrôle (if, while, for) • Similaire au C Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Le langage PHP • Langage de script dédié au Web • S’insère dans du code html (balise <?php). • Pas de contrôle de type (du script, quoi. . . ) • Des structures de contrôle (if, while, for) • Similaire au C • De nombreuses fonctionnalités (évolue encore) Olivier Caron March 21, 2016 4/29 PEIP 2 Bureau d’étude GIS Un exemple (1/2) Soit le fichier html-php suivant (nom du fichier : test.php) : <html> <head> < t i t l e > Premier programme PHP</ t i t l e > </head> <body b g c o l o r = white> <?php p r i n t ( ” <h1> code php en a c t i o n ! </h1>\n ” ) ; $ i =0 ; while ( $ i <5) { print ( ” <h2> h e l l o w o r l d ! </h2>\n ” ) ; $ i = $ i +1 ; } ?> <h1>Ce n ’ e s t p l u s du php ! < /H1> </body></html> Olivier Caron March 21, 2016 5/29 PEIP 2 Bureau d’étude GIS Un exemple (2/2) <html> <head> < t i t l e > Premier programme PHP </ t i t l e > </head> <body b g c o l o r = white> <h1> code php en a c t i o n ! </h1> <h2> h e l l o w o r l d ! </h2> <h2> h e l l o w o r l d ! </h2> <h2> h e l l o w o r l d ! </h2> <h2> h e l l o w o r l d ! </h2> <h2> h e l l o w o r l d ! </h2> <h1>Ce n ’ e s t p l u s du php ! < /H1> </body></html> Olivier Caron March 21, 2016 6/29 PEIP 2 Bureau d’étude GIS PHP : les variables • Utilisation de variables : $nomVariable • C’est l’initialisation qui définit le type : $i = 3 ; / / integer $ t r o u v e = t r u e / / booleen $car = ’ a ’ ; / / char $ s t r = ” s e l e c t ∗ from ” ; / / s t r : s t r i n g $ s t r = $ s t r . ” personne ” ; / / s t r i n g c o n c a t e n a t i o n de chaines $tab [ 0 ] = 3 ; / / a r r a y o f i n t e g e r $var = ( s t r i n g ) $ i ; / / v a r : s t r i n g , v a l u e ” 3 ” • Visibilité de la variable: dans le bloc où la variable est utilisée la première fois • Visibilité des variables globales : dans tout le fichier HTML (mot-clé global) Olivier Caron March 21, 2016 7/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) • = (affectation), l’affectation est un opérateur Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) • = (affectation), l’affectation est un opérateur • ++ (incrémentation),−− (décrémentation) Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) • = (affectation), l’affectation est un opérateur • ++ (incrémentation),−− (décrémentation) • opérateurs combinés (+=, -=, . . . ) ex : $a += 3 signifie qu’on ajoute à la variable $a la valeur 3 Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) • = (affectation), l’affectation est un opérateur • ++ (incrémentation),−− (décrémentation) • opérateurs combinés (+=, -=, . . . ) ex : $a += 3 signifie qu’on ajoute à la variable $a la valeur 3 • La concaténation de chaı̂nes, opérateur ’.’, ex : $ch = ”Bureau d’étude”.” PEIP” ; Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de base • opérateurs arithmétiques : + (addition), − (soustraction), * (multiplication), / (division), % (modulo) • = (affectation), l’affectation est un opérateur • ++ (incrémentation),−− (décrémentation) • opérateurs combinés (+=, -=, . . . ) ex : $a += 3 signifie qu’on ajoute à la variable $a la valeur 3 • La concaténation de chaı̂nes, opérateur ’.’, ex : $ch = ”Bureau d’étude”.” PEIP” ; • Une autre manière de concaténer des chaı̂nes : ex : $ch=”étude” ; $ch2=”Bureau d’$ch PEIP” ; Olivier Caron March 21, 2016 8/29 PEIP 2 Bureau d’étude GIS Les opérateurs de comparaison • == signifie égalité, renvoie true si égal Olivier Caron March 21, 2016 9/29 PEIP 2 Bureau d’étude GIS Les opérateurs de comparaison • == signifie égalité, renvoie true si égal • != signifie différent Olivier Caron March 21, 2016 9/29 PEIP 2 Bureau d’étude GIS Les opérateurs de comparaison • == signifie égalité, renvoie true si égal • != signifie différent • opérateurs classiques : <, >, <=, >= Olivier Caron March 21, 2016 9/29 PEIP 2 Bureau d’étude GIS Les opérateurs de comparaison • == signifie égalité, renvoie true si égal • != signifie différent • opérateurs classiques : <, >, <=, >= • ===, signifie égal à, en type et en valeur ex : $a=3 ; $b=”3”, $a === $b (retourne faux), $a==$b (retourne vrai) Olivier Caron March 21, 2016 9/29 PEIP 2 Bureau d’étude GIS Les opérateurs de comparaison • == signifie égalité, renvoie true si égal • != signifie différent • opérateurs classiques : <, >, <=, >= • ===, signifie égal à, en type et en valeur ex : $a=3 ; $b=”3”, $a === $b (retourne faux), $a==$b (retourne vrai) • !==, signifie différent en valeur ou différent en type Olivier Caron March 21, 2016 9/29 PEIP 2 Bureau d’étude GIS Les opérateurs logiques • Opérateur ! représente la négation Olivier Caron March 21, 2016 10/29 PEIP 2 Bureau d’étude GIS Les opérateurs logiques • Opérateur ! représente la négation • Opérateurs && ou AND représentent le et logique Olivier Caron March 21, 2016 10/29 PEIP 2 Bureau d’étude GIS Les opérateurs logiques • Opérateur ! représente la négation • Opérateurs && ou AND représentent le et logique • || ou OR représentent le ou logique Olivier Caron March 21, 2016 10/29 PEIP 2 Bureau d’étude GIS Les opérateurs logiques • Opérateur ! représente la négation • Opérateurs && ou AND représentent le et logique • || ou OR représentent le ou logique • XOR représente le ou exclusif logique Olivier Caron March 21, 2016 10/29 PEIP 2 Bureau d’étude GIS Structure de contrôle: if • Egal à 0 ou false implique faux, différent de zéro ou true implique vrai • Partie else facultative • Définitions de blocs ’{’ et ’}’ si nécessaire • Il existe aussi la clause elseif pour enchaı̂ner les tests <?php i f ( $v == ” e n s o l e i l l e ” ) p r i n t ( ” i l f a i t beau ” ) ; else { p r i n t ( ” i l ne f a i t pas beau ” ) ; p r i n t ( ” c ’ e s t l e nord . . . ” ) ; } ?> Olivier Caron March 21, 2016 11/29 PEIP 2 Bureau d’étude GIS Structure de contrôle: if • Attention au test d’égalité dans expression • Continue tant que l’expression est vraie <?php $i = 1 ; while ( $ i <=10) { print ( $i . ” ” ) ; $ i ++ ; } ?> Olivier Caron March 21, 2016 12/29 PEIP 2 Bureau d’étude GIS Structure de contrôle: for • 3 parties séparées par ”;” • partie 1 : initialisation variable • partie 2 : test pour repasser dans la boucle • partie 3 : expression effectuée à la fin de la boucle avant test de la partie 2 • l’instruction for est équivalente à une instruction while <?php p r i n t ( ”<h1>a f f i c h a g e des nombres p a i r s </h1>” \n ” ) ; f o r ( $ p a i r =2; $ p a i r <= 100; $ p a i r = $ p a i r +2) p r i n t ( $ p a i r . ”<b r />\n ” ) ; ?> Olivier Caron March 21, 2016 13/29 PEIP 2 Bureau d’étude GIS Sections de code PHP • Plusieurs sections de code PHP possibles dans un fichier HTML Olivier Caron March 21, 2016 14/29 PEIP 2 Bureau d’étude GIS Sections de code PHP • Plusieurs sections de code PHP possibles dans un fichier HTML • Possibilité d’un fichier pur PHP : bibliothèque de fonctions Olivier Caron March 21, 2016 14/29 PEIP 2 Bureau d’étude GIS Sections de code PHP • Plusieurs sections de code PHP possibles dans un fichier HTML • Possibilité d’un fichier pur PHP : bibliothèque de fonctions • Obligation : le fichier contenant du code PHP doit avoir le suffixe ”php” Olivier Caron March 21, 2016 14/29 PEIP 2 Bureau d’étude GIS Les fonctions PHP • Syntaxe : function nomFonction(argument1, argument2, ...) { liste d’instructions } Olivier Caron March 21, 2016 15/29 PEIP 2 Bureau d’étude GIS Les fonctions PHP • Syntaxe : function nomFonction(argument1, argument2, ...) { liste d’instructions } • Pas de distinction fonctions, procédures. Instruction return. Olivier Caron March 21, 2016 15/29 PEIP 2 Bureau d’étude GIS Les fonctions PHP • Syntaxe : function nomFonction(argument1, argument2, ...) { liste d’instructions } • Pas de distinction fonctions, procédures. Instruction return. • Bibliothèques de fonctions : require(’rep1/rep2/bib.php’) ; Olivier Caron March 21, 2016 15/29 PEIP 2 Bureau d’étude GIS Les fonctions PHP • Syntaxe : function nomFonction(argument1, argument2, ...) { liste d’instructions } • Pas de distinction fonctions, procédures. Instruction return. • Bibliothèques de fonctions : require(’rep1/rep2/bib.php’) ; • valeurs par défauts : function f($a, $b = "ok") Olivier Caron March 21, 2016 15/29 PEIP 2 Bureau d’étude GIS Les tableaux en PHP • Initialisation d’un tableau : $ t a b l e a u V i d e = array ( ) ; $ t a b l e a u E n t i e r s = array ( 2 , 2 7 , 3 5 , 4 5 ) ; $ t a b l e a u C o u l e u r s = array ( ” b l e u ” , ” b l a n c ” , ” rouge ” ) ; • Nbre d’éléments d’un tableau : fonction count($tab) p r i n t ( ” nbre d ’ elements : ” . count ( $ t a b l e a u C o u l e u r s ) . ”<b r />\n ” ) ; • Parcours d’un tableau (indice de 0 à taille-1) : f o r ( $ i =0; $ i <count ( $ t a b l e a u E n t i e r s ) ; $ i ++) p r i n t ( ” i n d i c e : $ i v a u t ” . $ t a b l e a u E n t i e r s [ $ i ] . ”<b r />\n ” ) ; Olivier Caron March 21, 2016 16/29 PEIP 2 Bureau d’étude GIS Les tableaux associatifs en PHP • Utilisation de noms pour indicer les valeurs : $ c o u l e u r s =array ( ” rouge ” => ” f f 0 0 0 0 ” , ” v e r t ” => ” 00 f f 0 0 ” , ” b l e u ” => ” 0000 f f ” ) ; • Accès à un élément d’un tableau associatif p r i n t ( ” code de b l e u ” . $ c o u l e u r s [ ” b l e u ” ] . ”<b r />\n ” ) ; / / a f f i c h e 0000 f f Olivier Caron March 21, 2016 17/29 PEIP 2 Bureau d’étude GIS Parcours de tableaux • Itération de tableaux : instruction foreach • Fonctionne pour tableaux associatifs ou non. • Deux syntaxes : foreach ( $ c o u l e u r s as $value ) p r i n t ( ” code : $value </br >\n ” ) ; / / ou b i e n foreach ( $ c o u l e u r s as $index => $value ) p r i n t ( ” code de $index : $value </br>” ) ; Olivier Caron March 21, 2016 18/29 PEIP 2 Bureau d’étude GIS Les tableaux multi-dimensionnels • On peut créer des tableaux à x dimensions Olivier Caron March 21, 2016 19/29 PEIP 2 Bureau d’étude GIS Les tableaux multi-dimensionnels • On peut créer des tableaux à x dimensions • Exemple : $tab[3][4] ; Olivier Caron March 21, 2016 19/29 PEIP 2 Bureau d’étude GIS Les tableaux multi-dimensionnels • On peut créer des tableaux à x dimensions • Exemple : $tab[3][4] ; • On peut combiner des tableaux indicés numériquement avec des tableaux associatifs Olivier Caron March 21, 2016 19/29 PEIP 2 Bureau d’étude GIS Récupération de données issues d’un formulaire web • Chaque donnée du formulaire est référencée par un nom issu de l’attribut name extract($_POST) ; ou extract($_GET) ; • PHP génère une variable du nom de la valeur de cet attribut • Possible par ce moyen de faire transiter des variables entre fichiers php : Exemple: <a href=fic2.php?j=3> Olivier Caron March 21, 2016 20/29 PEIP 2 Bureau d’étude GIS PHP et les bases de données • Des bibliothèques (API) qui permettent de gérer des bases de données Un ensemble de fonctions pour chaque SGBD • Alternative : PDO (PHP Data Object):une API unique quelque soit le SGBD Olivier Caron March 21, 2016 21/29 PEIP 2 Bureau d’étude GIS PHP Postgres : connexion à une base de données • Connexion : <?php / / Connexion , s é l e c t i o n de l a base de donn ées $db = pg connect ( ” h o s t = l o c a l h o s t dbname=nomBase ” . ” user=www password= f o o ” ) o r die ( ’ Connexion i m p o s s i b l e : ’ . p g l a s t e r r o r ( ) ) ; ?> • Fonctions pg connect et pg last error • La fonction die permet de quitter l’exécution du programme. Olivier Caron March 21, 2016 22/29 PEIP 2 Bureau d’étude GIS PHP Postgres : Déconnexion à une base de données • Déconnexion : <?php ... pg close ( $db ) ; ?> Olivier Caron March 21, 2016 23/29 PEIP 2 Bureau d’étude GIS PHP Postgres : instructions DDL <?php $base = . . . $requeteSQL= ” update employe s e t s a l a i r e = s a l a i r e ∗ 0.10 ” ; $ r e s u l t =pg query ( $db , $requeteSQL ) o r die ( ’ Echec de l a requ ê t e : ’ . p g l a s t e r r o r ( ) ) ; echo ” Mise à j o u r de ” . pg affected rows ( $ r e s u l t ) . ” employ é ( s)< b r /> ” ; ?> • Fonction pg affected rows, retourne le nombre de lignes concernées par l’opération de modification de la base. Olivier Caron March 21, 2016 24/29 PEIP 2 Bureau d’étude GIS PHP Postgres : consultation de la base (1/3) <?php $query = ’SELECT i d , a u t e u r FROM a u t h o r s ’ ; $ r e s u l t = pg query ( $db , $query ) o r die ( ’ Echec de l a requ ê t e : ’ . p g l a s t e r r o r ( ) ) ; ?> • Méthode pg query retourne une variable contenant les données résultat de la requête. Olivier Caron March 21, 2016 25/29 PEIP 2 Bureau d’étude GIS PDO : consultation de base (2/3) • 1ière version: récupération des données ligne par ligne <?php while ( $row = p g f e t c h a s s o c ( $ r e s u l t ) ) { echo $row [ ’ i d ’ ] . ” ” ; echo $row [ ’ a u t e u r ’ ] ; } ?> • Fonction pg fetch assoc retourne un tableau associatif de la ligne en cours • Fonction pg fetch row retourne un tableau de la ligne en cours, indice à partir de 0. Olivier Caron March 21, 2016 26/29 PEIP 2 Bureau d’étude GIS PDO : consultation de base (3/3) • 2ième version: récupération des données dans un tableau <?php $nbrows = pg num rows ( $ r e s u l t ) ; echo $nbrows . ” l i g n e ( s ) r e t o u r n ée ( s ) . \ n ” ; $rows = p g f e t c h a l l ( $ r e s u l t ) ; ?> • Fonction pg fetch all retourne un tableau de tableau associatif (indexé par noms des colonnes). Olivier Caron March 21, 2016 27/29 PEIP 2 Bureau d’étude GIS PHP, avant la conclusion • Trouvez l’erreur : <?php i n i s e t ( ’ d i s p l a y e r r o r s ’ , ’On ’ ) ; e r r o r r e p o r t i n g ( E ALL ) ; ?> Olivier Caron March 21, 2016 28/29 PEIP 2 Bureau d’étude GIS Conclusion • Deux bonnes adresses : Olivier Caron March 21, 2016 29/29 PEIP 2 Bureau d’étude GIS Conclusion • Deux bonnes adresses : • Ce cours PHP :http://ocaron.plil.fr Olivier Caron March 21, 2016 29/29 PEIP 2 Bureau d’étude GIS Conclusion • Deux bonnes adresses : • Ce cours PHP :http://ocaron.plil.fr • Le manuel PHP : http://www.php.net/manual/fr/ Olivier Caron March 21, 2016 29/29