PHP FST Beni Mellal
PHP FST Beni Mellal
2
Introduction
Navigateur
Demande de chargement
de la page index.html
Client 3
Introduction
Des sites de plus en plus riches en informations:
4
Introduction
Les langages de script-serveur : Définition
5
Introduction
Application Client-Serveur Dynamique
requête
réponse
appel de la page
6
Introduction
Les langages de création de page web dynamiques côté serveur
PHP
Gratuité : Tous les logiciels sont issus du monde des logiciels libres
(Open Source).
7
Un peu d’histoire
Il a été créé en 1994 par Rasmus Lerdorf pour les besoins des pages web
Home Page.
de nombreux modules et son code source est ouvert. Comme il supporte tous les
standards du web et qu’il est gratuit, il s’est rapidement répandu sur la toile.
En 1997, PHP devient un projet collectif et son interpréteur est réécrit par Zeev
Suraski et Andi Gutmans pour donner la version 3,4,5 qui s’appelles désormais
8
PHP (Hypertext Processor)
Langage de script côté serveur
Supporté par le Serveur Web Appache (le plus répandu)
connectivité avec un grand nombre de bases de données (en
particulier MySql : Gratuit et Performant)
Conçu pour le web
Proche du langage C
Portabilité du script : Multi plates-formes (Unix, Windows, …)
Intégration directe dans le code HTML (sur la même page)
Facilité de programmation
Nombreuses sources d'informations et d'aide (tutoriel, froums, …
9
PHP
PHP peut et doit être utilisé partout où il complète et simplifie
la production de pages HTML.
10
Intégration d’un script dans une page
Principe:
Les scripts PHP sont généralement intégrés dans le code d’un document
HTML
Les pages web sont au format html. Les pages web dynamiques générées
avec PHP4 sont au format php. Le code source php est directement insérer
dans le fichier html grâce au conteneur de la norme XML :
<?php … ?>
Exemple:
<html>
<body>
<?php
echo ’’Bonjour’’;
?>
11
</body>
Exemple de script
Exemple de script :
<html>
<body>
<h1>Mon premier script</h1>
<?php echo ‘’Bonjour\n’’; ?>
</body>
</html>
12
Introduction
Typologie
Les commentaires
- /* Voici un commentaire! */
13
Introduction
Envoi du code HTML par PHP
14
Variables, types et opérateurs
15
Les Variables (1)
Le typage des variables est implicite en php. Il n’est donc pas nécessaire de
déclarer leur type au préalable ni même de les initialiser avant leur utilisation.
Les variables peuvent être de type entier (integer), réel (double), chaîne de
caractères (string), tableau (array), objet (object), booléen (boolean).
18
Variables (4)
des variables
Variable locale
- Visible uniquement à l’intérieur d’un contexte d’utilisation
Variable globale
- Visible dans tout le script
- Utilisation de l’instruction global dans des contextes locales
Exemple 1 :
$V1 = 100; // la variable $V1 est initialisée à la valeur 100
$foobar = &$V1; // la variable $foobar fait référence à $V1
$V1++; // on change la valeur de $V1
echo $foobar; // qui est répercutée sur $foobar qui vaut alors 101
Exemple 2 :
function change($var) {
$var++; // la fonction incrémente en local l’argument
}
$nbr = 1; // la variable $nbr est initialisée à 1
change(&$nbr); // passage de la variable par référence
echo $nbr; // sa valeur a donc été modifiée 20
Variables (7)
Quelques fonctions :
$variable = "a";
if(empty($variable))
echo "vide";
else echo "non vide";
if(gettype($variable) == "integer")
$variable = 2.5;
settype($variable, "integer");
$var =12.5
$var =(int) $var; $var=12
23
Les constantes
L’utilisateur peut définir des constantes dont la valeur est fixée une
fois pour toute. Les constantes ne portent pas le symbole $ (dollars)
en début d’identificateur et ne sont pas modifiables.
Exemple 1 :
define("auteur’’,’’Foobar’’);
echo auteur; // affiche ‘Foobar’
Exemple 2 :
define(‘’Mon_Annee’’,1980);
echo Mon_Annee; // affiche 1980
Contrairement aux variables, les identificateurs de constantes (et
aussi ceux de fonction) ne sont pas sensibles à la casse. 24
Les opérateurs arithmétiques
$a + $b Somme
$a - $b Différence
$a * $b Multiplication
$a / $b Division
25
Les opérateurs d’incrémentation et de
décrémentation
26
Les opérateurs de comparaison
$a == $b Vrai si égalité entre les valeurs de $a et $b
28
Opérateurs de chaîne
PHP supporte deux opérateurs de chaine:
L’opérateur de concaténation ‘’.’’ qui concatène deux
expressions pour former une nouvelle chaine .
Exemple:
$var1=‘’journa’’;
$var2=‘’liste’’;
$concat=$var1 . $var2;
Echo $concat // ‘’journaliste’’
Exemple:
$var1=‘’journa’’;
$var2=‘’liste’’;
$var1 .= $var2; // ‘’journaliste’’
29
Structures de contrôle
Structures conditionnelles (même syntaxe qu’en langage C) :
30
Les structures conditionnelles (1)
La structure de base if…else
if( ... ) {
…
} elseif(… ) {
…
} else {
…
}
31
Les structures conditionnelles (2)
Exemple1:
switch( … ) {
case … : { … } break
…
case … : { … } break
default : { … }
] 33
Les structures conditionnelles (4)
Exemple1:
switch ($i) {
case 0:
echo "i égal 0";
break;
case 1:
echo "i égal 1";
break;
case 2:
echo "i égal 2";
break;
}
34
Les structures itératives (1)
35
Les structures itératives (2)
La boucle while
while (condition)
{
//instructions
}
36
Les structures itératives (3)
La boucle while
Exemple :
$i = 1;
while ($i <= 10) {
echo $i;
$i++ ;
}
37
Les structures itératives (4)
La boucle do…while
do
{
//instructions
}
while (condition)
38
Les structures itératives (5)
La boucle for
39
Les structures itératives (6)
La boucle for
Exemple :
for ($i = 1; $i <= 10; $i++) {
echo $i;
}
40
Les structures itératives (7)
L’instruction break permet de quitter prématurément une boucle.
Exemple :
while($nbr = $tab[$i++]) {
echo $nbr.’’<br />’’;
if($nbr == $stop)
break;
}
Exemple 1 :
$i=0;
while($i < count($tab)) { // count() retourne le nombre d’éléments
echo $tab[$i]
Echo ‘’<br>’’;
$i++;
}
Exemple 2 :
foreach($tab as $elem) {
echo $elem.’’<BR>’’;
} La variable $elem prend pour valeurs successives tous les éléments du
tableau $tab.
44
Tableaux (4): Tableaux à indices
Parcours d’un tableau: (suite).
< ?php
{
echo $prenoms[$numero] . ‘’<br />‘’;
}
?>
45
Tableaux (5): Tableaux à indices
Quelques fonctions:
count($tab), sizeof : retournent le nombre d’éléments du tableau
in_array($var,$tab) : dit si la valeur de $var existe dans le tableau $tab
list($var1,$var2…) : transforme une liste de variables en tableau
range($i,$j) : retourne un tableau contenant un intervalle de valeurs
shuffle($tab) : mélange les éléments d’un tableau
sort($tab) : trie alphanumérique les éléments du tableau
rsort($tab) : trie alphanumérique inverse les éléments du tableau
implode($str,$tab): retournent une chaîne de caractères contenant les
éléments du tableau $tab joints par la chaîne de jointure $str
explode($delim,$str) : retourne un tableau dont les éléments résultent du
hachage de la chaîne $str par le délimiteur $delim
array_merge($tab1,$tab2,$tab3…) : concatène les tableaux passés en
arguments
array_rand($tab) : retourne un élément du tableau au hasard
46
Tableaux (6): Tableaux associatifs
Un tableau associatif est appelé aussi dictionnaire ou hashtable. On associe à
chacun de ses éléments une clé dont la valeur est de type chaîne de
caractères.
L’initialisation d’un tableau associatif est similaire à celle d’un tableau normal.
Exemp le 1 :
$personne = array(‘’Nom’’ => ‘’César’’, ‘’Prénom’’ => ‘’Jules’’);
Exemple 2 :
$personne[‘’Nom’’] = ‘’César’’;
personne[‘’Prénom’’] = ‘’Jules’’;
Exemple 1 :
foreach($personne as $elem) {
echo $elem
}
Ici on accède directement aux éléments du tableau sans passer par les clés.
Exemple 2 :
foreach($personne as $key => $elem) {
echo ‘’$key : $elem’’;
}
Ici on accède simultanément aux clés et aux éléments.
48
Tableaux (8): Tableaux associatifs
Quelques fonctions :
array_count_values($tab) : retourne un tableau contenant les valeurs du
tableau $tab comme clés et leurs fréquence comme valeur (utile pour
évaluer les redondances)
array_keys($tab) : retourne un tableau contenant les clés du tableau
associatif $tab
array_values($tab) : retourne un tableau contenant les valeurs du tableau
associatif $tab
array_search($val,$tab) : retourne la clé associée à la valeur $val
49
Tableaux (9): Tableaux associatifs
Quelques fonctions alternatives pour le parcours de tableaux (normaux ou
associatifs) :
reset($tab) : place le pointeur sur le premier élément
current($tab) : retourne la valeur de l’élément courant
next($tab) : place le pointeur sur l’élément suivant
prev($tab) : place le pointeur sur l’élément précédant
each($tab) : retourne la paire clé/valeur courante et avance le pointeur
Exemple :
$colors = array(‘’red’’, ’’green’’, ’’blue’’);
$nbr = count($colors);
reset($colors);
for($i=1; $i<=$nbr; $i++) {
echo current($colors).’’<br />’’;
next($colors); 50
Tableaux (10): Tableaux associatifs
Les éléments d'un tableau peuvent être à leur tour des tableaux.
Ces tableaux dits multidimensionnels peuvent être comparés à des matr
Exemple :
$produit = array ( array ( "Ord", "Ordinateur",6700),
array ( "Imp", "Imprimante", 1600),
array ( ""Vid", "Video", 2200) );
La fonction sort() :
Effectue un tri croissant sur les valeurs des éléments d’un tableau selon un
critère alphanumérique.
Pour les tableaux associatifs les clés seront perdus et remplacées par un
indices créé après le tri commençant à 0.
<?php
$fruits = array("pomme", "orange", "banan", "avocat");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "\n";
}
?>
52
Tri d’un tableau
53
Tri d’un tableau
La fonction asort() effectue un tri croissant mais en préservant les clés pour
les tableaux associatifs.
<?php
$fruits = array("d" => "pomme", "a" => "orange", "b" => "banan", "c" => "a
vocat");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
On aura comme résultat:
c = avocat
b = banan
a = orange
d = pomme
La fonction ksort() effectue un tri des tableau selon les clés d’une manière
croissante. Et préserve les associations clé/valeur :
55
Manipulation de chaîne de caractères
les principales fonctions de manipulations de chaine de
caractères sont :
Substr() : permet d’accéder à une sous chaine d’une
chaine, en spécifiant les points de début et de longueur de
sous chaine.
56
Manipulation de chaîne de caractères
Strlen (chaine) : retourne la taille de la chaine
57
Manipulation de chaîne de caractères
58
Manipulation de chaîne de caractères
str_replace() : Remplace toutes les occurrences de modèle
dans chaîne par remplacement string
str_replace(modèle, remplacement, chaîne)
Exemple :
<?
$chaine="la belle vie";
$chaine=str_replace("vie", "vue", $chaine);
echo $chaine;
?>
// Ce code imprime : ″la belle vue″
59
Manipulation de chaîne de caractères
implode():Retourne une chaîne constituée de tous les
éléments du tableau, pris dans l'ordre, transformés en chaîne,
et séparés par séparateur.
string implode (string separator, array tableau)
Exemple :
<?php
$array = array('lastname', 'email', 'phone');
$res = implode("/", $array);
Exemple :
<?php
$chaine="Nom|Prenom|Adresse";
$champs=explode("|",$chaine);
$boucle=0;
while($boucle<sizeof($champs)){
echo$champs[$boucle];
$boucle++;
}
61
Fonctions (1)
Comme tout langage de programmation, php permet
l’écriture de fonctions.
62
Fonctions (2)
Exemple :
function mafonction($V) {
$V += 15;
echo ‘’Salut !’’;
return ($V+10);
}
$nbr = MaFonction(15.1);
63
Fonctions (3)
Les identificateurs de fonctions sont insensibles à la casse.
Exemple :
function change() {
global $var; // définit $var comme globale
$GLOBALS[‘’var’’] ++; // incrémente la variable globale $V
$var++; // cela sera répercuté dans le reste du
programme
} 64
Fonctions (4)
Exemple :
function change() {
static $var; // définit $var comme statique
$var++; // sa valeur sera conservée jusqu’au
prochain appel
}
NB:Une variable statique est une variable locale qui ne perd pas
sa valeur à chaque fois que la fonction est exécutée.
65
Fonctions (6)
Forcer le passage de paramètre par référence (équivalent à user
de global):
Exemple :
Exemple :
function une() { // définition de la fonction une
echo ‘’Binevenu…’’;
}
Exemple :
function trigo($nbr) {
return array(sin($nbr), cos($nbr), tan($nbr)); // retour d’un tableau
}
$r = 12;
list($a, $b, $c) = trigo($r); /* affectation aux variables $a,$b et $c des
éléments du tableau retourné par la fonction trigo */
echo ‘’sin($r)=$a, cos($r)=$b, tan($r)=$c’’; // affichage des variables
Nombres aléatoires :
rand($x,$y) : valeur aléatoire entre x et y
srand() : initialisation du générateur aléatoire 69
Dates et heures (I)
Les fonctions de dates et heures sont incontournables sur Internet et
sont indispensables pour la conversion en français des dates fournies
par la base de données MySQL qui les code au format anglophone
(YYYY-DD-MM hh:mm:ss).
Quelques fonctions :
Exemple 2 :
$aujourdhui = getdate();
$mois = $aujourdhui['mon'];
$jour = $aujourdhui['mday'];
$annee = $aujourdhui['year'];
echo ''$jour-$mois-$annee''; // affiche ‘31/3/2002’
71
Dates et heures (3)
Les clés du tableau retourné par getdate :
seconds : secondes
minutes : minutes
hours : heures
mday : jour du mois
wday : jour de la semaine, numérique
mon : mois de l'année, numérique
year : année, numérique
yday : jour de l'année, numérique
weekday : jour de la semaine, textuel complet en anglais
month : mois, textuel complet en anglais
72
Dates et heures (4)
Les formats pour date :
d Jour du mois sur deux chiffres [01..31] j Jour du mois sans les zéros initia
l Jour de la semaine textuel en version longue et en anglais
D Jour de la semaine textuel en trois lettres et en anglais
w Jour de la semaine numérique [0..6] (0: dimanche)
z Jour de l'année [0..365]
m Mois de l'année sur deux chiffres [01..12] n Mois sans les zéros initiaux
F Mois textuel en version longue et en anglais
M Mois textuel en trois lettres
Y Année sur 4 chiffres y Année sur 2 chiffres
h Heure au format 12h [01..12] g Heure au format 12h sans les zéros initiau
H Heure au format 24h [00..23] G Heure au format 24h sans les zéros initi
i Minutes [00..59] s Secondes [00.59]
a am ou pm A AM ou PM
L Booléen pour savoir si l'année est bisextile (1) ou pas (0)
S Suffixe ordinal anglais d'un nombre (ex: nd pour 2)
t Nombre de jour dans le mois donné [28..31]
U Secondes depuis une époque 73
Z Décalage horaire en secondes [-43200..43200]
Expression régulière en PHP
74
Expressions régulières ?
Une expression régulière ou rationnelle est une
séquence de caractères qui constitue un modèle
de recherche.
77
Les quantificateurs (1)
Les symboles *, + et ? Permettent de donner
er une notion de nombre.
* qui désigne "0 ou plusieurs occurrences".
78
Exemples
"abc+": chaîne qui contient "ab" suivie de un ou
plusieurs "c" ("abc", "abcc" ...).
"abc*": chaîne qui contient "ab" suivie de zero ou
plusieurs "c" ("ab", "abc" ...)
"abc?": chaîne qui contient "ab" suivie de zero ou un
"c" ("ab" ou "abc").
"^abc+": chaîne commençant par "ab" suivie de un
ou plusieurs "c" ("abc", "abcc" ...)
79
Les quantificateurs (2)
Les accolades {x,y} permettent de donner des limites
numériques précises à la quantification.
{x} : la chaîne doit être répétée X fois.
"abc{2}"
{x,y} : la chaîne peut être répétée de X fois à Y fois.
"abc{2,4}"
"abc{2,}"
* {0,}
+ {1,}
? {0,1} 80
Exemples
"abc{2}": chaîne qui contient "ab" suivie de deux
"c" ("abcc").
81
Les séquences de caractères
Les séquences de caractères permettent de faire porter les
quantificateurs non pas sur un seul caractère mais sur plusieurs
caractères situés les uns à côté des autres.
86
Fonctions de manipulation de Regexp
Exemple 1:
<?php
$Pattern = " ([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) "
$date = " 2016-09-3 "
if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))
{
echo "$regs[3].$regs[2].$regs[1]";
} else {
echo "Format de date invalide : $date";
}
?> 87
Fonctions de manipulation de Regexp
Exemple 2:
<?php
$chaine = 'Un exemple de chaîne simple';
if(ereg('`exemple`', $chaine))
{
echo 'Vrai, la chaîne correspond au masque';
}
else
{
echo 'Faux, la chaîne ne correspond pas au masque';
}
?>
88
Fonctions de manipulation de Regexp
89
Fonctions de manipulation de Regexp
Ereg_replace ()
90
Fonctions de manipulation de Regexp
Ereg_replace()
Exemple
$ch = '‘la 4° versionest 4 '‘
$ch2 = ereg_replace ('‘ [[:digit:]] '‘, '‘5'‘ , $ch);
Echo $ch2, '‘<br />'‘;
Echo ereg_replace ('‘est'‘, '‘ fut'‘, $ch), '‘<br />'‘;
91
PHP et les formulaires
92
PHP et les formulaires(1)
Formulaire HTML
93
PHP et les formulaires(2)
Champ de saisie de text en ligne
<input type = "text" name ="nom_du_champ« value="chaîne">
97
Validation du formulaire (6)
L’une des fonctionnalités les plus importantes de HP est la
validation des formulaires HTML.
?> 98
Validation du formulaire (7)
Validation d’une adresse de courrier électronique
<?php
if (empty($email)) {
die ("aucun email ni soumis");
}
elseif ((strlen($email)<3) || (strlen($email))>25)){
die ("email invalide ou longueur invalide");
}
elseif (!ereg("@", $email)) {die("email invalide ou @ n'existe
pas");
}
else {
echo $email;
99
}
Validation du formulaire (8)
Validation des mots de passe.
<?php
if ((empty($password) || empty($Cpassword()){
die("aucun password ni soumis");
}
elseif ((strlen($password<8) || (strlen($cpassword))>15)){
die("longuer du password incorrecte");
}
elseif{!(strlen($password) == strlen($cpassword))
die(" password incorrecte");
}
elseif{!($password === $cpassword)
die("password incorrecte");
}
else{ for ($i=0;$i<strlen($password);$i++)
echo "*"; 100
Exemple ilustratif
Une fois que le formulaire aura été envoyé, le relais est passé à
une autre fichier php : presentation.php
<?php
$nom = $_POST["nom"];
$prenom= $_POST["prenom"];
$age= $_POST["age"];
…………traitement des variables……………
……………………………………….. 101
Exemple illustratif
Après validation on aura un résultat sous forme
102
PHP et les formulaires(9)
104
Présentation
MySQL est une base de données implémentant le langage de
requête SQL un langage relationnel très connu. Cette partie
suppose connue les principes des bases de données
relationnelles.
106
Présentation
mysql_select_db($base[,$id]) :
permet de choisir la base $base. La fonction retourne (sous le nom $id) True
en cas de succès et False en cas d'échec. Toutes les reequêtes exécutées, par la
suite, seront faites avec la base de données active.
$connect_base=mysql_select_db("mabase",$ma_connexion);
if ($connect_base ==False) //si la base est inaccessible
{
die("base inaccessible") //affiche le message puis arrête le scrypte
}
echo "accès correct à la base"; // divers instructions
113
Extraction des données (I)
Une fois la requête effectuée et l’identificateur de résultat
acquis, il ne reste plus qu’à extraire les données retournées par
le serveur.
114
Extraction des données (II)
mysql_fetch_row($result) : retourne Une ligne de résultat sous la forme
d’un tableau appelée RecordSet. Les éléments du tableau étant les valeurs
des attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne.
Comme la fonctionne ne retourne qu'une seule ligne, il faudra boucler sur
le nombre d'enregistrements précédemment calculés.
Exemple 1 :
B1) while($ligne = mysql_fetch_row($resultat)) {
$id = $ligne[0];
$name = $ligne[1];
$address = $ligne[2];
echo ‘’$id - $name, $address <br />’’;
}
B2) For ($i=0; $i < mysql_num_rows($resultat); $i++) {
$ligne=mysql_fetch_row($resultat);
echo "$ligne[0] - $ligne[1] - $ligne[2] <br/>";
} 115
Extraction des données (III)
mysql_fetch_array($result) : retourne Une ligne d'enregistrements sous
forme de tableau associatif. Les clés étant les noms des attributs et les
valeurs associées leurs valeurs respectives.
On accède alors aux valeurs des champs par leur noms et non par leur indice.
Exemple 2 :
while($ligne = mysql_fetch_array ($resultat)) {
$numero = $ligne["id’’];
$nom = $ligne["name’’];
$adresse = $ligne["address’’];
echo "$numero - $nom, $addresse <br />’’;
}
116
Fonctions additionnelles
Quelques fonctions supplémentaires très utiles :
mysql_free_result($result) :
mysql_close($ma_connexion) :
ferme la connexion MySql. Elle n'est pas obligatoire *, car les connexions
sont automatiquement fermées à la fin du scrypte.
117