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

Documents pareils