Vous êtes sur la page 1sur 111

Chapitre 5:

Le LANGAGE
PHP
1
PARTIE 1:

Généralités

2
RAPPEL
Les SGBD (Systèmes de Gestion de Bases de Données) permettent
d’organiser le stockage d’informations.

Le langage SQL (Structured Query Language) permet d’interroger les bases de
données relationnelles :

SELECT cl_nom, cl_prenom


FROM clients
WHERE cl_ville = “Tunis“;

Les données sont récupérées sous


forme de tables (n lignes * m
colonnes)
Un certain nombre de traitements ne
peuvent pas être réalisés en SQL
Recours à un langage (autre que
SQL) qui est capable d’interagir avec
un SGBD 3
 Il s’agit de langages de script interprété
 Parmi les langages susceptibles
d’être utilisés on trouve :
LE MODÈLE: CLIENT SERVEUR

requête

Client internet Serveur

réponse

appel de la page

Base de Script
données extraction Document
de données PHP exécution
MySQL Html
4
LE LANGAGE PHP
1994 Rasmus Lerdorf
pour les besoins des pages web personnelles signifiait Personal
Home Page

1997 réécrit par Zeev Suraski et Andi Gutmans pour


donner
PHP3
PHP : « PHP: Hypertext Preprocessor »

Avantages de PHP:

 Il s’intègre facilement aux pages web


 gratuit (Open Source)
 syntaxe empruntée au langage C et à Perl
 nombreuses bibliothèques de fonctionnalités (BD, dessin, réseau) 5
LE LANGAGE PHP
PHP peut être utilisé de deux manières différentes :

 Soit comme un langage de programmation traditionnel (en ligne de commande)


Soit intégré dans une page web
>php bonjour.php
Bonjour
Exemple 1 de programme PHP

Fichier bonjour.php

<?php Autres syntaxes d’intégration :


<? … ?>
echo “Bonjour“;
<script language= "php" >…..</script>
?> <% … %>
6
LE LANGAGE PHP
Exemple 2 de script, code
Autre écriture du même script :
source (côté serveur) :
<?php
<html>
echo "<html>\n<body>\n";
<body>
echo ‟<h1>Mon premier script</h1>\n"; echo
<h1>Mon premier script</h1>
‟Bonjour\n";
<?php echo « Bonjour \n » ?>
echo "</body>\n</html>\n";
</body>
?>
</html>

Code source (côté client) de la Résultat affiché par le navigateur :


page essai.php résultant
du script

7
LES COMMENTAIRES
Un script php se commente comme en C :

Exemple 3:

<?php

// commentaire de fin de ligne

/* commentaire sur
plusieurs lignes */

?>

Tout ce qui se trouve dans un commentaire est ignoré. Il est conseillé de


commenter largement ses scripts. 8
LES VARIABLES
 Les variables sont toutes préfixées par le symbole $
<?php

$annee = 1980;
$nom = “Mohamed“; \n : retour à la ligne

echo “Bonjour, je m‟appelle $nom \n“;


echo “je suis né en $annee \n”;

?>

 Les variables ne sont pas typées en PHP

<?php
Une variable peut prendre n’importe
$valeur = 1;
quelle valeur (entier, réel, chaîne, tableau)
$valeur = “Bonjour“; 9
?>
LES VARIABLES

En PHP, contrairement à certains autres langages de programmation, aucune


restriction ne vient limiter la longueur des noms de variables. On peut tout
autant utiliser des caractères numériques que des caractères alpha-
numériques dans les noms de variables. Toutefois, les règles suivantes
doivent être respectées:
Les noms de variables doivent commencer par un symbole dollar « $ »
Les noms de variables peuvent commencer par un caractère de soulignement
Les noms de variables ne peuvent commencer par un caractère numérique
Les noms de variables doivent êtres pertinents et explicites

Exemples de noms de variables valides:


$prod_desc

$Intvar

$_Salesamt
10
LES VARIABLES

En PHP, déclaration de type de données des variables n’est pas nécessaire. Le


type de données d’une variable PHP change en fonction du contenu stocké
dans la variable. L’initialisation d’une variable est l’opération qui consiste à lui
affecter une valeur. On peut utiliser, attribuer successivement des valeurs de
types différents à une même variable. En PHP, les types de données se
répartissent en deux catégories: les types scalaires et les types composés.
Les types de données scalaires sont les types simples communs à la plupart
des langages de programmation. On retrouve les types suivants :
Chaîne

Entier

Booléen

À virgule flottante
Les types de données composés sont obtenus en regroupant plusieurs types
de données scalaires sous un même nom. Ils sont utilisés pour stocker et
11
manipuler des données appartenant à différents types de données.
LES VARIABLES
La catégorie des types de données composés regroupe les types de données
suivants:
 Tableau

 Objet

Explication sur chaque type de données PHP:

Entier: une variable entière peut seulement contenir des nombres positifs ou
négatifs
Chaine: une variable de type chaîne est utilisée pour stocker une suite de
caractères. En PHP, aucune restriction ne vient limiter la longueur d’une chaîne.
Booléen: une variable de type booléen contient soit la valeur True ou False. On
peut faire référence à une valeur booléenne en employant une valeur numérique en
représentant True par 1 et False par 0.
Virgule flottante: les variable de type virgule flottante peuvent uniquement
contenir des nombres décimaux.
12
LES VARIABLES
Tableau: un tableau est employé pour stocker plusieurs valeurs appartenant au
même type de données. On peut définir la longueur d’un tableau lors de sa
déclaration ou encore au moment de l’exécution.

Objet : les objets sont une composante essentielle de tout langage de


programmation. Ils stockent non seulement des données mais également la
fonctionnalité des données ou ce qui doit être fait avec les données.

13
LES CONSTANTES
La valeur d'une constante 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.

define("var",valeur) : définit la constante var (sans $) de valeur valeur

Exemple 4 :

define("author","Mohamed");
echo author; // affiche ‘Mohamed’
Exemple 5 :
define(MY_YEAR,1980);
echo MY_YEAR; // affiche 1980

Contrairement aux variables, les identificateurs de constantes (et aussi ceux de


fonction) ne sont pas sensibles à la casse. 14
LES OPÉRATEURS PHP

 Opérateurs arithmétiques
Les opérateurs arithmétiques s’appliquent sur une ou deux opérandes de
types Number.

 Opérateurs de comparaison
Les opérateurs de comparaison s’appliquent à différents types de données
et renvoient un booléen en fonction du résultat de la comparaison.
o Opérateurs logique
Ces opérateurs s’appliquent à des booléens et permettent d’évaluer des
expressions logiques.

15
LES OPÉRATEURS PHP

Tab 1. Opérateurs arithmétiques Tab 2. Opérateurs logiques

Opération Signe ET &&


Addition + OU ||
NON !
Soustraction -
Multiplication *
Tab 3. Opérateur d’affectation
Division /
Opération Signe

Modulo % Affectation =

16
LES OPÉRATEURS PHP
Tab 4. Opérateurs de comparaison

Egal à ==
Identique à ===
Différent de !=
Inférieur, supérieur <;>
Inférieur ou égal, <= ; >=
supérieur ou égal

PHP supporte un autre opérateur conditionnel : l’opérateur ternaire « ? ». Sa


syntaxe est la suivante:
(expr1)?: (expr2): (expr3);

Cette expression retourne la valeur de l’expression expr2 si l’expression17


expr1 est vraie et renvoie l’expression expr3 si l’expression expr1 est fausse
LES OPÉRATEURS PHP
Tab 5. Opérateurs d’incrémentation et de décrémentation

Nom Symbole Action


Préincrémentation ++$myvar Incrémente la valeur courante de $myvar par
1 puis renvoie la nouvelle valeur de $myvar
Postincrémentation $myvar++ Renvoie la valeur courante de $myvar puis
incrémente la valeur courante de $myvar par
1

Prédécrémentation --$myvar Décrémente la valeur courante de $myvar par


1 puis renvoie la nouvelle valeur de $myvar

Postdécrémentation $myvar-- Renvoie la valeur courante de $myvar puis


décrémente la valeur courante de $myvar par
1

18
LES CHAÎNES DE CARACTÈRES
(1)
Une variable chaîne de caractères n’est pas limitée en nombre de caractères.
Elle est toujours délimitée par des simples quotes ou des doubles quotes.
Exemple 6:
$nom ="Mohamed";
$prenom = ‘Salah';

Les doubles quotes permettent l’évaluation des variables et caractères spéciaux


contenus dans la chaîne (comme en C ou en Shell) alors que les simples ne le
permettent pas.
Exemples :
echo "Nom: $nom"; // affiche Nom: Mohamed
echo 'Nom: $nom'; // affiche Nom: $nom
Quelques caractères spéciaux : \n (nouvelle ligne), \r (retour à la ligne), \t (tabulation
horizontale), \\ (antislash), \$ (caractère dollars), ‟\ (double quote).
Exemple 7: echo "Hello Word !\n"; 19
LES CHAÎNES DE CARACTÈRES (2)
 Opérateurs de chaîne
PHP supporte deux opérateurs de chaîne : l’opérateur de concaténation « . » qui
concatène deux expressions pour former une nouvelle chaîne et l’opérateur
d’affectation concaténant « .= » qui concatène l’expression spécifiée du côté
droit de l’opérateur avec celle qui est déterminée du côté gauche .
Exemple 8:
<?php
$myvar1=« some »;
$myvar2=« thing »;
$concat= $myvar1. $myvar2 ;
echo $concat , « <br>\n »; // $concat==« something »

$myvar1=« some »;
$myvar1.=« thing »;
echo $myvar1 , « <br>\n »; // $myvar1==« something »
?> 20

15
LES CHAÎNES DE CARACTÈRES (3)

Quelques fonctions:

strlen($str) : retourne le nombre de caractères d’une


chaîne
strtolower($str) : conversion en minuscules
strtoupper($str) : conversion en majuscules
trim($str) : suppression des espaces de début et de
fin de chaîne
substr($str,$i,$j) : retourne une sous chaîne de $str de taille $j et débutant
à la position $i
strnatcmp($str1,$str2) : comparaison de 2 chaînes
21
addslashes($str) : ajouter les backslashes ("\") devant les caractères
ord($char) : retourne la valeur ASCII du caractère $char
LES CHAÎNES DE CARACTÈRES (4)

strstr($texte,$chaine_recherchée) : localise la première occurrence d’une


chaîne dans une autre. Elle renvoie la valeur False si aucune occurrence n’a
été trouvée.

Exemple 9:
$content=« Motherboard »;
$base=strstr($content,’b’);
echo $base; // renvoie ‘board’

Le contenu de la variable $content est exploré ici par la fonction strstr à la


recherche du caractère « b ». Lorsque strstr localise « b », elle renvoie ce
caractère, suivi de tous les caractères suivants jusqu’à la fin de la chaîne
contenue dans $content.
22
LES CHAÎNES DE CARACTÈRES (5)

str_replace($chaine_recherchée,$chaine_remplacement,$texte):
parcourt une chaîne et y remplace toutes les occurrences d’une chaîne
spécifique par une autre chaîne . Si la chaîne de remplacement est plus
courte que la chaîne à remplacer la fonction str_replace ajoute des espaces à
la fin de la chaîne de remplacement.

Exemple 10:

$story=« This is an excellent example of a horror story. »;


$retstring=str_replace(« excellent », « exceptional »,$story);
echo $retstring; // renvoie «This is an exceptional example of a horror
story. »

23
LES CHAÎNES DE CARACTÈRES (6)

Les fonctions d’affichage :


echo() : écriture dans le navigateur
print() : écriture dans le navigateur
printf([$format, $arg1, $arg2]) : écriture formatée comme en C, i.e. la chaîne
de caractère est constante et contient le format d’affichage des variables passées
en argument

Exemple 11 :

echo "Bonjour $nom";


print("Bonjour $nom");
printf("Bonjour %s", $nom);

24
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (1)
En général en programmation PHP, il n’est pas nécessaire de déclarer le type
des variables. Dans certains cas toutefois, il devient indispensable de le faire. Par
exemple, il peut être nécessaire d’ajuster dynamiquement le type de données
d’une variable en fonction du résultat d’une certaine opération. Pour cela, vous
devez tout d’abord déterminer quel est le type de données de la variable puis
modifier ce type en utilisant deux fonctions spéciales offertes par PHP.
La fonction settype()
La fonction settype() fixe le type de données d’une variable. Sa syntaxe est la
suivante:
boolean settype(mixed $mavariable, string typedonnées)
La fonction settype() force la variable $mavariable à rendre le type de données
typedonnées. Elle retourne la valeur booléenne True si la conversion a réussi et
False si elle a échoué. L’argument typedonnées peut prendre l’une des valeurs
suivantes: integer, string, boolean, float, null, array et object.
25
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (2)

Exemple 12 :

$Mystrval=« Container 72 »; // valeur chaîne


$Myboolval=False; // valeur booléenne
settype($Myboolval, « string »); // renvoie 0
settype($Mystrval, « integer»); // renvoie 72
settype($Myboolval, «integer»); // renvoie 0

26
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (3)

Exemple 13 :

<?php
$var="3.52 kilomètres";
settype($var,"double");
echo "\$var= ",$var,"<br />"; //affiche "$var=3.52"
settype($var,"integer");
echo "\$var= ",$var,"<br />"; //affiche "$var=3"
settype($var,"boolean");
echo "\$var= ",$var,"<br />"; //affiche "$var=1" soit la valeur true
?>
27
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (4)
Autre façon de conversion du type:

Parfois il peut être indispensable de convertir explicitement une variable d’un type
dans un autre. C’est particulièrement vrai pour les variables issues d’un
formulaire, ce dernier étant l’outil essentiel de communication du poste client au
serveur. Ces variables sont toujours de type string. Pour convertir une variable
d’un type dans un autre, utilisez la syntaxe suivante :
$result = (type_désiré) $mavar;
Si vous créez bien de la sorte une nouvelle variable du type désiré à partir de la
première variable, celle-ci conserve son type initial. Si vous n’avez pas de raison
de craindre de perdre la valeur initiale, il vous suffit de donner le même nom aux
deux variables.
Dans l’exemple suivant, on transforme une chaîne de caractères successivement
en nombre décimal puis en entier et enfin en booléen : 28
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (5)

Exemple 14 :

<?php
$var="3.52 kilomètres";
$var2=(double) $var;
echo "\$var2= ",$var2,"<br />"; // affiche "$var2=3.52"
$var3=(integer) $var2;
echo "\$var3= ",$var3,"<br />"; // affiche "$var3=3"
$var4=(boolean) $var3;
echo "\$var4= ",$var4,"<br />"; // affiche "$var4=1" soit la valeur true
?>
29
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (6)

La fonction gettype()


La fonction gettype() renvoie le type de données de la variable qui lui est
passée comme argument. Sa syntaxe est la suivante:
string gettype(mixed $var)
La fonction gettype() retourne sous forme de chaîne le type de données de la
variable var.
La valeur renvoyée est l’une des valeurs suivantes: integer, string, boolean,
double, null, array, object ou resource.

30
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (7)
Les fonctions suivantes permettent de vérifier si une variable est d’un type précis :
• is_integer($var) ou is_int($var)
• is_double($var)
• is_string($var)
• is_bool($var)
• is_array($var)
• is_object($var)
• is_resource($var)
• is_null($var)
Elles retournent la valeur booléenne TRUE si la variable est du type
recherché et FALSE dans le cas contraire. On peut savoir si une variable
contient une valeur scalaire en appelant la fonction is_scalar($var) et plus
précisément, si elle contient une valeur numérique de type integer 31
ou double en appelant la fonction is_numeric($var).
FONCTIONS DE DÉTERMINATION ET
D’AJUSTEMENT DU TYPE DE DONNÉES D’UNE
VARIABLE (8)
Exemple 15 :

<?php La variable $var est incrémentée d’une


unité uniquement si elle contient une
$var = 73; valeur numérique
if(is_int($var))
{ $var++;
echo "La variable vaut $var <br />";
} // Affiche : La variable vaut 74
$var2="Bonjour "; La variable $var2 est concaténée avec
la chaîne "à tous" uniquement si elle est
if(is_string($var2)) de type string
{ $var2.=" à tous!";
echo $var2;
} // Affiche : Bonjour à tous ! 32
?>
AUTRES FONCTIONS SUR LES VARIABLES

Contrôler l’état d’une variable

Lors de l’envoi de données d’un formulaire vers le serveur, le script qui reçoit les
informations doit pouvoir détecter l’existence d’une réponse dans les champs du
formulaire. Les fonctions isset() et empty() permettent ce type de contrôle.
La fonction isset(), dont la syntaxe est la suivante :
boolean isset($var)
retourne la valeur FALSE si la variable $var existe mais n’est pas initialisée ou si
elle a la valeur NULL et la valeur TRUE si elle a une valeur quelconque. Il peut y
avoir plusieurs paramètres dans cette fonction mais ils doivent tous répondre à
cette même condition pour que la fonction retourne la valeur TRUE.
La fonction empty(), dont la syntaxe est la suivante :
boolean empty(expression)
retourne la valeur TRUE si l’expression passée en paramètre n’est pas
initialisée, a une des valeurs suivantes : 0, NULL, FALSE, la chaîne "0" ou est
33
un tableau vide, et la valeur FALSE si elle a une quelconque autre valeur.
LES TABLEAUX (1)

Un tableau est un conteneur employé pour stocker plusieurs valeurs à la fois.


Un tableau peut également contenir plusieurs éléments possédant plusieurs
valeurs. Dans le langage PHP, un tableau peut comprendre des éléments de
différents types de données. Les éléments d’un tableau sont référencés ou
manipulés par leur indice (ou clé). Par défaut, l’indice d’un tableau est un
nombre entier. Les tableaux PHP sont classés en trois catégories selon
l’organisation de leurs indices et de leurs éléments:
 Les tableaux indexés numériquement
 Les tableaux associatifs
 Les tableaux multidimensionnels

(a) Les tableaux indexés numériquement :


Les indices du tableau commencent par zéro.

34
LES TABLEAUX (2)

Exemple 16 :

$Tableau[0]=12; $Tableau[1]=« Bonjour »;

$Tableau[]=12; $Tableau[]=« Bonjour »;

(b) Les tableaux associatifs :


PHP permet l’utilisation de chaînes de caractères au lieu de simples entiers
pour définir les indices d’un tableau.

Exemple 17 :
$Auteur[« Nom »]=« Van Lancker»; $Auteur=array(« Nom »=>« Van
$Auteur[« Prénom »]=«Luc»; Lancker», « Prénom » =>«Luc», «
Code_Postal »=>7700 );
$Auteur[« Code_Postal»]=7700; 35
LES TABLEAUX (3)

(c) Les tableaux multidimensionnels :


En programmation PHP, on a la possibilité de stocker des tableaux entiers dans
un autre tableau. Un tableau dont les éléments sont eux-mêmes des tableaux
est qualifié de tableau bidimensionnel. Si les tableaux stockés dans un tableau
containeur sont bidimensionnels, alors le tableau containeur est tridimensionnel
et ainsi de suite.
Exemple 18 :
Un tableau bidimensionnel est crée :
<?php
$student=array(« 0 »=> array(« name »=> « James» , « sex »=> »Male », « age
»=> « 28»), « 1 »=> array(« name »=> « John» , « sex »=> »Male », « age »=>
« 25»), « 2 »=> array(« name »=> « Susan» , « sex »=> »Female », « age »=>
« 24»),
);
Print $student[2][« age »]; 36
?>
LES TABLEAUX (4)

Initialisation de tableau
L’initialisation d’un tableau peut être implémentée de deux manières
différentes:
 Au moyen de l’identificateur de tableau
 Avec la fonction array()
 Utilisation de l’identificateur du tableau
$student[]=« James »; $student[]=« John »;

$student[0]=« James »; $student[1]=« John »;

 Utilisation de la fonction array()


$student=array(« James »,« John »);
37
LES TABLEAUX (5)

Manipulation de tableaux:
 Déterminer la taille ou le nombre des éléments d’un tableau: usage
de la fonction count()

 Modifier de la taille d’un tableau:


 Réduction de la taille d’un tableau: usage de la fonction
array_slice(). Celle-ci prend comme arguments un tableau, une position
de départ et une longueur. Le troisième argument est optionnel. Si la
position spécifiée est un nombre positif, elle est calculée à partir du
début du tableau tandis que si elle est un nombre négatif, la position est
calculée à partir de la fin du tableau.
Exemple 19 :
$Student=array(«ab»,«bc»,« cd », «de», «ef », «fg », « gh »);
$Student_red=array_slice($student,4); // réduire le nombre d’éléments 38
du tableau de 7 à 4 en conservant les 4 premiers éléments
LES TABLEAUX (6)
array_shift() : supprime le premier élément du tableau

Exemple 20:
$Student=array(« James », « Susan », « John »);
$New=array_shift($Student); // Premier élément du tableau $Student est
supprimé , « James » est alors supprimé puis renvoyé et stocké dans la
variable $new

Augmentation de la taille d’un tableau: usage de la fonction


array_push() pour insérer des éléments dans un tableau. Celle-ci prend
comme arguments le tableau à allonger, suivi des nouveau éléments à
insérer. Elle renvoie le nombre total d’éléments contenus dans le tableau
modifié.
Exemple 21:
$Student=array(« James », « Susan », « John »);
39
$Insert=array_push($Student, « a », « b», « c»);
LES TABLEAUX (7)
 Fusionner deux tableaux:
Usage de la fonction array_merge() qui fusionne les tableaux qui lui sont
passés comme arguments et renvoie le tableau combiné.

Exemple 22:
$Student=array(« John », «James», «Susan»);
$Class=array(« 4 », « 5 », « 6»);
$Combine=array_merge($Student, $Class); // tableau $Combine contient les
éléments du tableau $Student et $Class

 Obtenir l’intersection de tableaux:


Usage de la fonction array_intersect().
Exemple 23:
$old=array(« a», «b», «c»);
$new=array(«c», « d», «e»); 40
$Intersection=array_intersect($old, $new);
LES TABLEAUX (8)

 Eliminer les doublons dans un tableau:


Usage de la fonction array_unique().
Exemple 24:
$unique=array_unique($old);

 Naviguer dans un tableau:


L’instruction foreach constitue la méthode la plus puissante.
La fonction print_r() permet d’afficher tout le contenu d’un tableau avec l’indice et
la valeur de chaque élément.

Exemple 25:
$Student=array(« a »=> « John », « James », « Susan»);
print_r($Student); 41
LES TABLEAUX (9)

Exemple 26:
$tableau = array(1, 2, 3);

foreach($tableau as $element)
{ echo “$element \n“;}

42
LES TABLEAUX (10)
 Inversion d’un tableau:
Traiter un tableau dans l’ordre inverse, la fonction array_reverse() peut être
utilisée. Sa syntaxe est la suivante:
$array2= array_reverse($array1);

 Tri de tableaux
sort() est la fonction PHP de tri la plus simple.
 La fonction sort():
Utilisée pour trier des tableaux dans un ordre numérique ou alphabétique.
Exemple 27:
$Student = array(« John », « James », « Susan »);
sort($Student);

0 James
1 John 43

2 Susan
LES TABLEAUX (11)
Exemple 28:
$Student = array(« JS »=> «John Smith », « JP » =>«James Patt »,
« SC »=>«Susan Carter»);
sort($Student);

0 James
1 John
2 Susan
Les indices de type chaîne du tableau associatif ont été remplacés par des
indices numériques. C’est là un inconvénient de la fonction sort(). Pour éviter
cette conversion en une indexation numérique, on utilise la fonction asort().
PHP offre plusieurs fonctions pour opérer des tris dans des tableaux associatifs
ou indexés numériquement. Ces fonctions sont les suivantes:

44
LES TABLEAUX (12)

 La fonction asort():
Trie le tableau passé comme argument sans en modifier l’indexation. Le tri du
tableau précédent avec la fonction asort() donne le résultat:
JP James Patt
JS John Smith
SC Susan Carter

 La fonction rsort():
rsort() est analogue à sort() si ce n’est qu’elle trie le tableau passé comme
argument dans l’ordre inverse. L’exemple suivant:
$Student = array(«John», «James»,«Susan»);
rsort($Student);

0 Susan
1 John 45
2 James
LES TABLEAUX (13)

 La fonction arsort():
Trie le tableau passé comme argument dans l’ordre inverse sans en modifier
l’indexation. Le tri du tableau précédent avec la fonction arsort() donne le résultat
suivant:
SC Susan Carter
JS John Smith
JP James Patt

 La fonction ksort():
Trie les indices du tableau associatif qui lui est passé comme argument. Par
exemple, dans le cas du tableau Student suivant:
$Student=array(«b»=>«Susan»,«d»=>«Andrew»,«a»=>«John», «c »=>«James»);
ksort($Student);

46
LES TABLEAUX (14)

a John
b Susan,
c James
d Andrew

 La fonction krsort():
Cette fonction est analogue à ksort() si ce n’est qu’elle trie le tableau qui lui est
passé comme argument dans l’ordre inverse. Par exemple, dans le cas du
tableau Student précédent, appliquer cette fonction donnerait le résultat
suivant:
d Andrew
c James
b Susan,
a John 47
LES STRUCTURES DE CONTRÔLE (1)
Structure conditionnelle:
if (condition) { action 1 } else { action 2 }
Exemple 29:
If ($valeur > 1) { If ($valeur == 1)
echo “la valeur est supérieure à 1"; {
} echo “la valeur est égale à 1“;
}
If ($valeur < 1) { else
echo “la valeur est inférieure à 1"; {
} echo “la valeur est différente de 1“;
}
If ($valeur == 1) {
echo “la valeur est égale à 1";
}

If ($valeur != 1) {
48
echo “la valeur est différente de 1";
}
LES STRUCTURES DE CONTRÔLE (2)

Structure conditionnelle:
La syntaxe de l’instruction switch est la suivante:

swi t c h ( v a r i a b l e ) {
case valeur1 :
Instructions
br e a k ;
c a s e v a l e u r 2 ::
Instructions
br e a k ;
..
default:
Instructions
br e a k ;
} 49
LES STRUCTURES DE CONTRÔLE (3)
Structures répétitives
Boucles for et foreach :

for( initialisation ;test ; incrément/décrément)


{
Instructions
}
foreach (expressiontab1 as $valcourr)
{
Instructions
}
OU foreach (expressiontab1 as $valsource=>$valcourr)
{
Instructions 50
}
LES STRUCTURES DE CONTRÔLE (4)

Boucles while :

wh i l e ( c o n d i t i o n )
{
Instructions
}

Do
{Instructions
} wh i l e ( c o n d i t i o n ) ;
51
FONCTIONS (1)

PHP supporte deux types de fonctions:

 Les fonctions prédéfinies ou intégrées


 Les fonctions définies par l’utilisateur

Les fonctions prédéfinies ou intégrées

Les fonctions prédéfinies dans le langage PHP comme count(), echo(),


array_reverse(),…….

Les fonctions définies par l’utilisateur

Appelées fonctions personnalisées ne sont pas implémentées dans PHP.

52
FONCTIONS (2)
Une fonction en PHP doit être déclarée selon le modèle suivant:

function nom_fonction ($para1, $para2, ... , $paran)


{
Instruction;
Instruction;
...
[ return résultat; ]
}

function est un mot réservé du langage Javascript. Para1, para2, ...


contiennent des paramètres qui vont pouvoir être utilisés dans la fonction.
Enfin, le mot réservé return permet de renvoyer une valeur à l’instruction
appelante.

Passage des arguments à une fonction

En PHP, il existe trois différentes manières de passer des arguments à une 53


fonction:
FONCTIONS (3)
En spécifiant des valeurs par défaut
Par valeur
Par référence

 Spécifier des valeurs par défaut pour les arguments d’une fonction

Dans le script qui suit, la fonction requiert un argument. Toutefois, elle peut être
invoquée à partir du script principal sans spécifier d’argument. En effet, dans ce
cas, le compilateur utilise la valeur par défaut qui est affectée à l’argument dans
la déclaration de la fonction

Exemple 30:
<?php
function counter($number=6) {
for(;$number<10;$number++) {
echo $number, « \n »;
}}
echo « La fonction n’a pas été appelée . » , « \n » ;
counter(8);
counter(); 54
echo « La fonction a été appelée . » , « \n » ;
?>
FONCTIONS (4)
 Passer un argument par valeur
C’est la méthode la plus utilisée en PHP pour passer des valeurs à des
fonctions. Elle requiert de passer une valeur (un argument) à la fonction lorsque
celle-ci est invoquée à partir du programme principal.
Exemple 31:
<?php
function counter($number) {
for(;$number<10;$number++) {
echo $number, « \n »;
}}
echo « La fonction n’a pas été appelée . » , « \n » ;
counter(3);
echo « La fonction a été appelée . » , « \n » ;
?>
55
FONCTIONS (5)
 Passer un argument par référence
Lorsqu’un argument est passé par valeur à une fonction, c’est en réalité une
copie de l’argument qui est passée à la fonction invoquée. Il en résulte que
les modifications éventuellement apportées à la valeur passée comme
argument au sein de la fonction appelée n’affectent pas la valeur originale à
l’extérieur de la fonction.
Exemple 32:
<?php
$num=10;
function called_function($number) {
$number =$number+1;
echo $number, « \n »;
}
called_function($num); //invocation de la fonction avec passage d’argument par
valeur résultat 11
echo $num, « \n » ; // résultat 10 56
?>
FONCTIONS (6)
<?php
$num=10;
function called_function($number) {
$number =$number+1;
echo $number, « \n »;
}
called_function(&$num); //invocation de la fonction avec passage
d’argument par référence résultat 11

echo $num, « \n » ; // résultat 11


?>

57
FONCTIONS (7)

Portée d’une variable au sein d’une fonction


La portée d’une variable fait référence à son accessibilité. En PHP, une
variable déclarée au sein d’une fonction ne peut être utilisée à l’extérieur de la
fonction: la portée de la variable est alors locale. On peut contourner la portée
limitée des variables au sein des fonctions : usage des mots clés static et
global.
 L’instruction global:

L’instruction global est employée pour obtenir qu’une variable déclarée au sein
d’une fonction reste accessible depuis l’extérieur de celle-ci. La syntaxe à
utiliser est la suivante:
global $variable1;

58
FONCTIONS (8)
Exemple 33:

<?php
function sum() {
global $result;
echo $result, « \n »;
}
$result=0;
echo $result, « \n »; // résultat 0
sum(); // résultat 0
?>

59
FONCTIONS (9)

 L’instruction static:

Une variable déclarée au sein d’une fonction a une durée de vie très courte:
elle est initialisée à l’invocation de la fonction et désinitialisée une fois
l’exécution de la fonction achevée et le contrôle repasse au script principal. En
utilisant le mot clé static, on peut augmenter la durée de vie d’une variable au
sein d’une fonction . La syntaxe à utiliser est la suivante:
static $variable1;

60
FONCTIONS (10)
Exemple 34:
<?php
function sum() {
$result=1;
echo $result, « \n »;
$result++;
}
sum(); // résultat 1
sum(); // résultat 1
?>
Les appels successifs de la fonction sum() produisent le même résultat, c’est-
à-dire l’affichage de la valeur 1, parce que la variable $result est réinitialisée à
chaque nouvelle invocation de la fonction et que l’effet de l’instruction
d’incrémentation est perdu. Il suffit d’une petite modification de ce script pour
obtenir que l’effet de l’incrémentation perdure d’un appel de fonction à l’autre:61
l’ajout du mot clé static devant la variable $result.
FONCTIONS (11)
Exemple 34 modifié:

<?php
function sum() {
static $result=1;
echo $result, « \n »;
$result++;
}
sum(); // résultat 1
sum(); // résultat 2
?>

62
FONCTIONS (12)
INCLUSION DU CODE EXTERNE
 2 directives :
 include("fichier");
 require("fichier");

Ces fonctions ont pour objet d’insérer à un endroit du script un fichier PHP ou HTML.
Le nom ou le chemin d’accès du fichier est précisé en argument de la fonction include
ou de la fonction require. Le fichier inclus est analysé notamment pour y découvrir les
scripts PHP qui auraient été placés entre <?php et ?>. Ces fonctions sont relativement
semblables aux directives include du C ou require de Perl. Il existe une subtile
différence entre les deux fonctions. Plus rapide, mais moins souple, la fonction require
donne lieu à insertion directe et littérale du fichier désigné à la place de la fonction. En
revanche, la fonction include est traitée au moment de l’exécution et correspond donc
au mieux à un appel de fonction.

Exemple 35:
63
FONCTIONS (12)
INCLUSION DE CODE EXTERNE

inclusion.php
  <html >
<head >
<title >Page PHP </ title >
<meta http - equiv =" content - type " content =" text / html ; charset =utf -8" />
<meta http - equiv =" Content -Style - Type " content =" text / css " />
</ head >
<body >
<?php include (“Entete. Inc.php "); ?>
<p>contenu normal de la page </p>
<p align =" right ">
<i><?php include(“Pieddepage.inc.php "); ?></i>
</p>
</ body > 64
</ html >
QUELQUES FONCTIONS
MATHÉMATIQUES
 double/integer abs(double/ integer X) : Valeur absolue de X
 string base_convert(string N, integer B1,integer B2) : Convertit le nombre N
contenu dans une chaîne de la base B1 dans la base B2.

 double ceil(double X) : l’entier immédiatement supérieur à X.


 double exp(double X) : Exponentielle de X, soit ex.
 double floor(double X) : Retourne la partie entière de X, soit l’entier immédiatement
inférieur à X.
 Boolean is_finite( double X) : Retourne TRUE si la valeur X est finie, c’est-à-dire
dans l’intervalle des valeurs admises pour un double, et FALSE dans le cas contraire.
 Boolean is_infinite( double X) : Retourne TRUE si la valeur X est supérieure à la
valeur maximale admise pour un double, et FALSE dans le cas contraire.
 boolean is_nan(double X): Retourne TRUE si la valeur X n’est pas un nombre et
FALSE dans le cas contraire.
65
LA FONCTION MAIL (1/2)
La fonction mail() permet d’envoyer un courrier électronique. Elle emploie le protocole
SMTP(Simple Mail Transfer Protocol).Sur internet, les serveurs SMTP sont utilisés pour
échanger des courriers électroniques. La fonction PHP mail() part de l’hypothèse qu’un
serveur SMTP est installé et configuré dans l’ordinateur qui exécute l’application.
La syntaxe de la fonction mail() est la suivante:
$résultat=mail($destinataire,$objet,$message,$en_têtes_supplémentaires);
Où:
$destinataire indique l’adresse de courrier électronique du destinataire du message. Vous
pouvez spécifier plusieurs adresses dans cet argument en les séparant par une virgule,
comme le montre l’exemple suivant:
// une seule adresse email spécifiée
$result=mail("bookworm@bukbuz.com");
//plusieurs adresses email spécifiées
$result=mail("bookworm@bukbuz.com,bookfreak@bukbuz.com");
$objet définit l’objet du message sous forme de chaîne.
$message spécifie le contenu ou le corps du message à envoyer, sous forme de chaîne.
Pour transmettre un message sur plusieurs lignes, séparez les lignes avec les
66
caractères \r\n.
LA FONCTION MAIL (2/2)
$en_têtes_supplémentaires est utilisé pour attacher du texte à la fin de l’en-tête du
message. Cet argument prend des valeurs sous forme de chaîne.

Exemple 36:
<?php
if(empty($mailto)){
die("Pas de destinataire trouvé" );}
if(empty($mailsubject)){
$mailsubject=" ";}
if(empty($mailbody)){
$mailbody =" " ;}
$result=mail($mailto, $mailsubject, $mailbody);
If($result){
echo "<h1><center>E-mail envoyé avec succès !</center></h1>";}
else
{echo "<h1><center>Echec d’envoi de l’E-mail !</center></h1>";} 67
?>
LES FICHIERS (1/3)
OUVERTURE DES FICHIERS

 Ouverture : $fichier=fopen("NOM", "MODE"); avec MODE valant :


• r, r+ : lecture et lecture/écriture, pointeur au début
• w, w+ : écriture et lecture/écriture, avec création ou effacement, pointeur au début
• a, a+ : écriture et lecture/écriture, pointeur à la fin, avec création
• x, x+ : création en écriture et lecture/écriture, pointeur au début, erreur en cas
d’existence du fichier
• c, c+ : création en écriture et lecture/écriture, pointeur au début, sans erreur

 Verrouillage d’un fichier :


bool flock($fichier, int $operation)
 Fermeture : fclose($fichier);
 Présence : file_exists($fichier);

68
LES FICHIERS (2/3)
GESTION DES FICHIERS

 Lecture d’une ligne :


string fgets($fichier [, integer nbOctets])
 Lecture d’un caractère :
string fgetc($fichier)
 Ecriture d’une ligne :
integer fputs($fichier, string)
 Test de fin de fichier :
boolean feof($fichier)
 Positionnement : fseek($fichier, int $position);

69
LES FICHIERS (3/3)
exemple 37

fichier.php

<html >
<head >
<title >Lecture / Ecriture dans un fichier </ title >
<meta http - equiv =" Content - type " content =" text / html ; charset =utf -8"/>
</ head >
<?php
$fichier = fopen (" fichier . txt", "a");
fputs( $fichier , "Une phrase \n");
fclose( $fichier );
$fichier = fopen (" fichier . txt", "r");
echo "<p> Dans le fichier fichier . txt :</p>";
while (!feof ( $fichier )){
echo fgetc ( $fichier );
}
fclose ( $fichier ); 70
?>
</ html >
LES FORMULAIRES (1/3)
POST/GET
Les champs d’un formulaire sont disponibles à travers les variables superglobales $_GET
et $_POST

Remarques :
 Si le submit est une image, les coordonnées du click sont transmises via $sub_x et
$sub_y
 Il est possible d’utiliser des tableaux à une dimension pour des formulaires ayant par
exemple des listes à choix multiples
 Les caractères spéciaux (&, ", ’, <, >) doivent être transformés en caractères
interprétables par le navigateur :
string htmlentities(string [,int $flags])
string html_entity_decode(string [,int $flags])
 La balise HTML <pre>...</pre> peut être utilisée pour interpréter les espaces,
tabulations et sauts de ligne.

71
LES FORMULAIRES (2/3)
exemple 38

htmlentities.php

<?php
$phrase = "J’aime le <strong >gras </ strong > !";
$a = htmlentities ($phrase );
$b = html_entity_decode ($a);
echo $phrase . "<br/>"; // J’aime le gras ! ( avec " gras " en gras )
echo $a . "<br/>"; // J’aime le <strong >gras </ strong > !
echo $b; // J’aime le gras ! ( avec " gras " en gras )
?>

72
LES FORMULAIRES (3/3)
EXEMPLE DE TRAITEMENT DE FORMULAIRE
exemple 39

formulaire.php

<form action=" formulaire.php" method=" POST ">


<label >Prenom </ label > <input type =" text " name =" prenom " size ="10" value =" Alex "/>
<label >Nom </ label > <input type=" text " name="nom " size ="20" value="P"/><br/>
<label >OS : Unix </ label > <input type=" radio " name="os" value=" unix "/>
<label >OS /2 </ label > <input type=" radio " name="os" value="os /2"/>
<label >Windows </ label > <input type=" radio " name="os" value=" windows "/><br/>
<input type=" text " name=" ligne " value="<script type=’ text/javascript’>alert(’ Pub
!’);</ script >" size="20"/><br/>
<input type=" submit " name=" action " value=" Envoyer "/>
<input type=" reset " value=" Effacer "/>
</ form > 73
<p>
<? php
If(isset ($_POST [’action’]) && !empty($_POST[’prenom’]) && ! empty($_POST[’nom’])
&& !empty($_POST[’os’]) && ! empty($_POST[’ligne’])) {
echo $_POST[’prenom ’]." ". $_POST[’nom ’]." utilise un système d’ exploitation ".
$_POST[’os ’]."<br/>";
echo "<p> htmlentities( Ligne ) -> ". htmlentities($_POST[’ligne ’])." </p>";
echo "<p>Ligne -> ". $_POST[’ligne’]." </p>";
}
else
echo "<p> Tous les champs doivent être renseignés </p>";
?>
</p>

74
SESSIONS
Une session est la durée pendant laquelle un utilisateur reste connecté à un site Web.
Lorsqu'un utilisateur accède à votre site, l'identificateur de session est envoyé à son
ordinateur, après quoi une session d'utilisateur est initialisée. Si l'emploi des cookies est
activé au niveau du client, l'identificateur de session est expédié à l'utilisateur dans un cookie.
Ce cookie est nommé PHPSESSID. L'identificateur de session est également stocké dans le
serveur en tant que fichier temporaire.
Variables de session
Une variable de session est une variable globale qui conserve sa valeur sur toutes les pages
utilisant des sessions PHP. En d'autres termes, une variable de session continue à exister si
elle n'est pas supprimée explicitement. Voici sous quel format peut être stockée une variable
de session côté serveur:
Welcome | s:5: "78"
Dans l'instruction précédente, le nom de la variable de session est Welcome. La valeur
correspondante de la variable est 78.
Une variable de session peut stocker les valeurs suivantes: les valeurs d'entiers, les valeurs
de chaînes, les tableaux, les objets. Avant de pouvoir accéder à une variable de session par
programmation(extraire la valeur stockée dans une variable de session), il faut l'enregistrer.
75
Enregistrer une variable de session
L'accès à une variable est conditionné à son enregistrement. Cet enregistrement
aide également à conserver la valeur de la variable de session sur toutes les pages
qui utilisent des sessions PHP. La procédure pour enregistrer une variable de
session est la suivante:
L'analyseur PHP reçoit le cookie
L'analyseur PHP récupère la valeur de PHPSESSID à partir de ce cookie.
L'analyseur PHP recherche alors le fichier de session correspondant
L'analyseur PHP recherche un identificateur de session correspondant dans
un fichier de session temporaire
L'analyseur PHP recherche alors la variable de session spécifiée dans ce
fichier
Après avoir localisé la variable avec succès, l'analyseur extrait la valeur
stockée dans celle-ci.

Pour enregistrer une variable de session, il faut d'abord affecter une valeur à la
variable et appeler la fonction session_register(). La syntaxe de cette fonction est la
suivante:
bool session_register(mixed arg1, mixed arg2,.....,argn); 76
Cette fonction reçoit une ou plusieurs variables devant être enregistrées pour la
session courante. La fonction renvoie True si a variable a été définie avec succès.
Dans le cas contraire elle renvoie False.
Exemple 40
<?php
$vb1="la variable doit être enregistrée !";
session_register('vb1');
echo $vb1;
?>

NB: La fonction session_register est obsolète à partir de PHP 5.3.0 et a


été SUPPRIMÉE à partir de PHP 5.4.0. On utilise à la place une variable de
session, simplement en ajoutant l'index approprié dans la variable $_SESSION.

77
Exemple 41 Enregistrer une variable avec $_SESSION.
<?php
session_start();
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = 0;
} else {
  $_SESSION['count']++;
}
?>

Annuler l'enregistrement d'une variable de session


On peut également annuler l'enregistrement d'une variable de session (càd
supprimer de la mémoire) dans la session courante en cas de non besoin grâce à la
fonction suivante:
bool session_unregister(string nom);

78
Exemple 42 Retirer une variable de session avec la superglobale $_SESSION.
<?php
session_start();
unset($_SESSION['count']);
?>
Attention: N'utilisez PAS la fonction unset() avec $_SESSION sous la
forme unset($_SESSION) sinon, cela rendra impossible l'enregistrement de
données dans la session en utilisant la super-globale $_SESSION.

79
Exemple 43 Compter le nombre de passages d'un utilisateur sur une page
<?php

session_start();

if (empty($_SESSION['count'])) {
   $_SESSION['count'] = 1;
} else {
   $_SESSION['count']++;
}
?>

<p>
 Bonjour visiteur, vous avez vu cette page <?php echo $_SESSION['count']; ?
> fois.
</p>

<p>
Pour continuer, <a href="nextpage.php?<?php echo htmlspecialchars(SID); ?
>">cliquez ici</a>.</p>
80
 La fonction htmlspecialchars() est utilisée lors de l'affichage du SID dans le but
de contrer les attaques de sécurité.

 L'affichage du SID, comme montré dans l'exemple ci-dessus, n'est pas


nécessaire si --enable-trans-sid a été utilisé pour compiler PHP.

81
Lancer une session
La fonction intégrée à PHP session_start() permet de créer une nouvelle session ou
pour reprendre la session courante sur la base de l'ID de session qui lui est
transmis via une variable GET ou un cookie. La syntaxe de la fonction est la
suivante:
bool session_start();
Elle renvoie toujours True. À mettre obligatoirement avant tout envoi d’en-tête et
dans toute page participant à une session

Attribuer un nom à une session


La fonction session_name() permet d'obtenir ou définir le nom de la session
courante. Le nom de la session référence l'ID de session stocké dans un cookie ou
une URL. La syntaxe de la fonction est la suivante:
string session_name(string nom);

La fonction session_name() accepte un argument unique sous la forme du nom du


cookie de la session. Quand aucun nom n'est spécifié, la fonction renvoie le nom
courant de la session. Elle doit être appelée avant les fonctions session_start() et
session_register().
82
Supprimer une session
La fonction session_destroy() supprime (ou détruit) toutes les données enregistrées
dans la session courante. La syntaxe de la fonction est la suivante:
bool session_destroy();

Crypter/décrypter des données de session


En PHP, on peut stocker toutes les variables de session sous la forme d'une chaîne.
PHP permet de revenir aux variables originales. Il s'agit du codage et du décodage
des données. PHP fournit la fonction session_encode() pour encoder les
informations de la session courante sous la forme d'une chaîne. Cette chaîne peut
alors être décodée et il est possible de récupérer les variables initiales par le biais
de la fonction session_decode().
La syntaxe de la fonction est la suivante:
string session_encode();
La syntaxe de la fonction session_decode() est la suivante:
string session_decode(string données);

La fonction session_decode(), en revanche décode les informations de session


encodées par la fonction session_encode() de façon à rétablir la forme initiale. 83
Exemple 44:
session_name();
session_start();
session_register("customerid");
session_encode();
$url="Location:mypage.php?PHPSESSID".$PHPSESSID;
header($url);

La session courante se voit attribuer un nom, puis elle est lancée. La variable
customerid est enregistrée en tant que variable de session. La fonction
session_encode() entre alors en jeu pour encoder les données.

84
Notes utiles :

 La fonction header envoie un en-tête HTTP au navigateur. Elle doit être appelée avant tout tout
envoi de contenu au navigateur. Les en-têtes HTTP sont des chaînes de commandes spéciles
échangées entre le navigateur et le serveur Web avant toute réception de contenu par le
navigateur. Certains de ces en-têtes permettent au serveur de savoir quel fichier envoyer. D’autres
peuvent fournir au navigateur des informations sur le type de fichier qu’il va recevoir.
 Variables prédéfinies par PHP: avant toute exécution d’un script, PHP crée un ensemble de
variables qui sont définies dans un espace de noms superglobal. Elles sont de ce fait accessibles
de l’intérieur des fonctions et des classes sans déclaration d’accès explicite.
Exemples :
 _COOKIE: la variable _COOKIE est un tableau des cookies envoyés du navigateur au serveur.
Les clés du tableau sont les noms des cookies.
 _GET: _GET mémorise les valeurs de tous les champs transmis via GET. Les clés du tableau
sont les noms de variables transmises dans la requête.
 _POST:le tableau _POST mémorise les valeurs de tous les champs transmis via la méthode
POST. Les clés du tableau sont les noms de variables transmises dans la requête.
 _SESSION: le tableau _SESSION mémorise les variables des sessions internes de PHP
 _SERVER: le grand tableau _ SERVER réunit les informations de description du serveur et de
son environnement. Plusieurs élements peuvent faire ou non partie de _SERVER selon la nature
du serveur et du fait que le script a été lancé depuis un interpréteur shell par exemple :
PHP_AUTH_USER : nom de l’utilisateur transmis par le navigateur
85
PHP_AUTH_PW: mot de passe transmis par le navigateur
PARTIE 2:

L’utilisation de PHP avec des bases


de données MySQL

86
PLAN

1. Création d'une base de données MySQL sous PHP

2. Connexion à une base de données

3. Ajout d'enregistrements à une base de données

4. Interrogation d'une base de données

 Requête simple
 Requête multiple

1. MAJ d'une base de données

2
BASE DE DONNÉES MYSQL SOUS PHP

Pour se connecter à une base depuis php, il faut spécifier un nom de serveur,
un nom d’utilisateur, un mot de passe et un nom de base.

Les fonctions de connexion


Connexion au serveur :
$connect=mysql_connect(<adresse>,<id utilisateur>,<mot de passe>); établir
une connexion avec une base de données MySQL.

adresse: L’adresse IP ou le nom d’hôte de l’ordinateur dans lequel est installé le


serveur MySQL. On peut définir la valeur localhost pour indiquer que MySQL est
executé sur la même machine que le serveur Web.

id utilisateur: l’identifiant d’un utilisateur bénéficiant d’un droit d’accès à la base
de données. Cet ID utilisateur doit être enregistré dans le serveur MySQL avec
les autorisations appropriées pour que l’accès à la base de données soit possible.

3
BASE DE DONNÉES MYSQL SOUS PHP
mot de passe: cet argument contient le mot de passe associé à l’ID utilisateur
spécifié comme second argument. L’utilisation de mot de passe sécurise l’accès à la
base de données en l’interdisant aux personnes non autorisés. Si ce troisième
argument n’est pas fourni, le mot de passe est supposé blanc.
$connect: la variable $connect est l’identificateur de connexion. Elle contient la
valeur True si la connexion a été établie avec succès et la valeur False dans le cas
contraire. On peut l’utiliser dans le code PHP pour faire référence à la connexion ou
pour établir une connexion avec la base de données.

Choix de la base:
mysql_select_db($base[,$id]) : permet de choisir la base $base, retourne
TRUE en cas de succès, sinon FALSE
Fermeture de la connexion:
mysql_close([$id]) : permet de fermer la connexion

Les identifiants de connexion ne sont pas nécessaires si on ne se connecte qu’à une


seule base à la fois, ils permettent seulement de lever toute ambiguïté en cas de89
connexions multiples.
CONNEXION À UNE BASE DE DONNÉES
SOUS PHP
1) Établir la connexion au serveur

// Information pour la connection à la DB


$host = 'localhost';
$user = 'root';
$pass = ' ';

// Connection au serveur
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );

if (!$link)
{
die('Echec de connexion : ' . mysql_error());
}

90
CRÉATION D'UNE BASE DE DONNÉES SOUS
PHP
2) Création d'une base de données MySql sous PHP
Nom de la base: BIBLIOTHEQUE

// Création de la base
if (mysql_query("CREATE DATABASE BIBLIOTHEQUE",$link))
{
echo "Base de données créée ";
}
else
{
ech
o
"Err
$createtable=mysql_create_db($nomdb);
eur
La devariable $nomdb contient le nom à affecter à la base de données qui doit
êtrecrécrée tandis que la variable $createtable contient le résultat de la
tentative
atio de connexion avec MySQL c’est-à-dire la valeur True ou la valeur 91
False
n selon que la tentative est respectivemet fructueuse ou pas.
de
CRÉATION D'UNE BASE DE DONNÉES SOUS
PHP
3) Création de la table ouvrages

// Création de la table ouvrages


mysql_select_db(" BIBLIOTHEQUE ", $link);

// Execution d'une requête


mysql_query("CREATE TABLE ouvrages (
id mediumint NOT NULL,
auteur VARCHAR(128),
titre VARCHAR(128),
edition VARCHAR(32),
annee SMALLINT,
isbn CHAR(13),
PRIMARY KEY (id)");

// Fermeture de la connexion
mysql_close($link); 92
AJOUT D'ENREGISTREMENTS À UNE BASE
DE DONNÉES SOUS PHP

4) Ajout d'enregistrements à la table ouvrages

// requête SQL ajout d'un enregistrement dans la table

mysql_query("INSERT INTO ouvrages(auteur,titre,edition,annee,isbn)


VALUES('Ali Salah','Pratique informatique','Gafsa','2012','8888888888888')");

echo 'Un enregistrement ajouté...';


mysql_close($link) ;

93
INTERROGATION D'UNE BASE DE
DONNÉES SOUS PHP
5) Interrogation de la table ouvrages:

Pour envoyer une requête à une base de donnée, il existe la fonction :


mysql_query($str) qui prend pour paramètre une chaîne de caractères qui contient
la requête écrite en SQL et retourne un identificateur de résultat ou FALSE si échec.

Les requêtes les plus couramment utilisées sont : CREATE (création d’une
table), SELECT (sélection), INSERT (insertion), UPDATE (mise à jour des
données), DELETE (suppression), ALTER (modification d’une table), etc.

Exemple :

$result = mysql_query(‘’SELECT address FROM users WHERE


name=\’’$name\’’’’);

Cet exemple recherche l’adresse de l’utilisateur portant pour nom la valeur de la


chaîne $name. L’identificateur de résultat $result permettra à d’autres fonctions
d’extraire ligne par ligne les données retournées par le serveur. 94

Attention, contrairement à Oracle SQL, les requêtes MySQL ne se terminent pas


par un point virgule ‘;’ et n’autorisent pas les SELECT imbriqués.
INTERROGATION D'UNE BASE DE
DONNÉES SOUS PHP
6) Consultation de la table ouvrages: Requête simple
//récupère tous les enregistrements
$select = 'SELECT * FROM ouvrages';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
if($total) {
// début du tableau
echo '<table
bgcolor="#FFFFFF">'."\n";
echo '<tr>';
echo '<td bgcolor="#669999"><b><u>auteur</u></b></td>';
echo '<td bgcolor="#669999"><b><u>titre</u></b></td>';
echo '</tr>'."\n";

// lecture et affichage des résultats sur 2 colonnes, 1 résultat par ligne.


95
else
echo 'Pas d\'enregistrements dans cette table...';
mysql_free_result($result); // on libère le résultat
INTERROGATION D'UNE BASE DE
DONNÉES SOUS PHP
7) Consultation de la table ouvrages (suite)

// lecture et affichage des résultats sur 2 colonnes, 1 résultat par


ligne. while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['auteur'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['titre'].'</td>'; echo
'</tr>'."\n"; }
echo '</table>'."\n";} // fin du tableau.

96
INTERROGATION D'UNE BASE DE
DONNÉES SOUS PHP

Deux fonctions PHP de traitement du résultat d’une requête MySQL:

$resrow=mysql_fetch_row($result) : cette fonction convertit une ligne du


résultat de la requête en un tableau unidimensionnel indexé numériquement
$resrow. Le premier champ du résultat devient alors index1 dans le tableau
résultant, le second champ devient index2 et ainsi de suite.

 $resrow=mysql_fetch_array($result) : cette fonction convertit une ligne du


résultat de la requête en un tableau associatif $resrow. Les champs sont alors
indexés à partir de leur nom. En cas d’erreur et si aucune valeur n’est obtenue,
cette fonction renvoie la valeur NULL.

97
INTERROGATION D'UNE BASE DE
DONNÉES SOUS PHP
8) Requête Auteur / Ouvrage : Requête multiple
<?php
$select = 'SELECT * FROM ouvrage AS n, auteur AS a WHERE n.id_auteur = a.id_auteur';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
if($total) {
// première ligne on affiche les
titres
// lecture et affichage des
résultats sur 2 colonnes, 1
résultat par ligne.
while($row = mysql_fetch_array($result)) {
echo '<tr>';
echo '<td bgcolor="#CCCCCC">'.$row['id_auteur'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['nom'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['prenom'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['email'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['id'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['date_edition'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['titre'].'</td>'; 98
echo '<td bgcolor="#CCCCCC">'.$row['message'].'</td>';
echo '<td bgcolor="#CCCCCC">'.$row['id_auteur'].'</td>';
echo '</tr>'."\n"; }
MAJ D'UNE BASE DE DONNÉES SOUS
PHP
9) Modification (MAJ) d'un enregistrement de la table ouvrages

Méthode 1 (sans interface ):


// requête SQL MAJ d'un enregistrements dans la table

mysql_query("Update ouvrages set edition ='Gafsa' where edition ='Redeyef'");

99
MAJ D'UNE BASE DE DONNÉES SOUS
9)
PHP
Modification (MAJ) d'un enregistrement de la table ouvrages (suite)
Méthode 2 (Avec interface ): Affichage et sélection d'un enregistrement
<?php
while($rows=mysql_fetch_array($result)){ Liste.php
?>
<tr>
<td><?php echo $rows['id']; ?></td>
<td><?php echo $rows['auteur']; ?></td>
<td><?php echo $rows['titre']; ?></td>
<td><?php echo $rows['edition']; ?></td>
<td><?php echo $rows['annee']; ?></td>
<td><?php echo $rows['isbn']; ?></td>
<td align="center"><a href="update.php?id=<?php echo $rows['id']; ?>">Mise à jour</a></td>
</tr>
<?php $id=$rows['id'];?>
<?php
100
}
?>
MAJ D'UNE BASE DE DONNÉES SOUS
9) PHP de la table ouvrages (suite)
Modification (MAJ) d'un enregistrement
Méthode 2 (Avec interface ): Formulaire
<form name="form1" method="post" action="update_ac.php"> update.PHP
…………………………………………………..
<tr>
<td align="center"> <input name="auteur" type="text" value="<?php echo $rows['auteur']; ?
>"> /td>
<td align="center"> <input name="titre" type="text" value="<?php echo $rows['titre']; ?>">
</td>
<td align="center"> <input name="edition" type="text" value="<?php echo $rows['edition']; ?
>">
</td>
<td align="center"> <input name="annee" type="text" value="<?php echo $rows['annee']; ?
>"> /td>
<td> <input name="isbn" type="text" value="<?php echo $rows['isbn']; ?>"> </td>
<td> <input name="id" type="hidden" value="<?php echo $rows['id']; ?>"> </td>
</tr>
<tr>
<td>&nbsp;</td>
<td align="center"> <input type="submit" name="Submit" value="Submit"> </td>
101
<td>&nbsp;</td>
</tr>……………………………………………………
</form>
MAJ D'UNE BASE DE DONNÉES SOUS
9) PHP de la table ouvrages (suite)
Modification (MAJ) d'un enregistrement
Méthode 2 (Avec interface ): Script de MAJ
$id=$_POST['id'];
$auteur=$_POST['auteur']; update_ac.PHP
$titre=$_POST['titre'];
$edition=$_POST['edition'];
$annee=$_POST['annee'];
$isbn=$_POST['isbn'];
// MAJ de la base ouvrage
$sql=("UPDATE $tbl_name SET auteur='$auteur', titre='$titre',
edition='$edition',annee='$annee',
isbn='$isbn' WHERE id='$id'");
$result=mysql_query($sql);
// MAJ avec succès
if($result){
echo " MAJ avec succès ";
echo "$id";
echo "<BR>";
echo "<a href='liste.php'>Voir le résultat</a>";
}
102
else {
echo "ERROR";}
SUPPRESSION D'ENREGISTREMENTS D'UNE
BASE DE DONNÉES SOUS PHP
10) Suppression d'un enregistrement de la table ouvrages
<html>
<body>
<form action="supp_base_localhost.php" method="post">
<h1> Formulaire de suppression d'enregistrements </H1>
Donnez le numéro Isbn: <input type="text" name="isbn" maxlength="13" size="13"
/><br /><br />
<input type="submit" />
</form>
</body>
</html>

//Supression d'un enregistrement dans la table selon le numéro ISBN


if(mysql_query("DELETE FROM ouvrages WHERE isbn='$_POST[isbn]'")){
echo 'Enregistrement suprimé.';
}else{
echo 'Erreur lors de la suppression !'; 103
}
mysql_close($link) ;
FONCTIONS ADDITIONNELLES

11) Quelques fonctions supplémentaires trés utiles

• Quelques fonctions supplémentaires trés utiles :

• mysql_free_result($result) : efface de la mémoire du serveur les lignes du


résultat de la requête identifiée par $requet. Très utile pour améliorer les
performances du serveur.

• mysql_insert_id([$id]) : retourne l’identifiant d’un attribut clé primaire


AUTO_INCREMENT de la dernière insertion.

• mysql_affected_rows(): cette fonction renvoie le nombre total de lignes


insérées ou mises à jour dans une table par une requête MySQL. Cette
fonction est souvent utilisée dans le cas où les résultats des requêtes
contiennent plusieurs lignes. 104
FONCTIONS ADDITIONNELLES

• mysql_num_fields($result) : retourne le nombre d’attributs du résultat.

• mysql_num_rows($result) : retourne le nombre de lignes du résultat. Et


ainsi permet de remplacer le while par un for.

• Penser à bien tester la valeur de retour des fonctions (mysql_query et


les autres) afin de détecter toute erreur et d’éviter de polluer votre page
avec des Warnings.

105
PARTIE 3:

106
FONCTIONS ADDITIONNELLES
12) Envoi de mail à partir d'une page HTML contact_form.html

<html>
<body>
<h1>Formulaire de contact</h1>
<form action="contact_send.php"
method="POST" border: solid 1px #000000>
<p>Nom</p> <input type="text"
name="nom">
<p>Email</p> <input type="text"
name="email">
<p>Message</p><textarea name="message"
rows="10" cols="30"></textarea><br />
<input type="submit" value="Send"><input
type="reset" value="Clear">
</form>
</body>
</Html> 107
FONCTIONS ADDITIONNELLES
13) Envoi de mail à partir d'une page HTML (suite) contact_send.php

<html>
<body>
<?php
$name = $_POST['nom'];
$email = $_POST['email'];
$message = $_POST['message'];
$formcontent="From: $name \n Message: $message";
$recipient = "benhafsia@yahoo.fr";
$subject = "Formulaire de Contact";
$mailheader = "From: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Merci!";
?>
</body> 108

</html>
FONCTIONS ADDITIONNELLES
14) Intégration de la vidéo dans une page HTML
<! Avec lecteur flash: en Local!>
- un fichier .flv (vidéo)
- un fichier .swf (player)
- un fichier config_flvplayer.txt(configuration)

<! A partir des serveurs vidéo ex: Youtube !>

- Créer un compte sur YouTube, DailyMotion


- Télécharger la vidéo sur leurs serveurs,
- Récupérer le code que propose ces site et insérer ce code dans votre
page. (Onglet: Intégrer) 109
FONCTIONS ADDITIONNELLES
15) Intégration de la vidéo dans une page HTML

<html>
<TITLE>Intégration Video</TITLE>
<body>
<h1 align="center">Intégration Video</h1>
<! Avec lecteur flash: en Local!>
<object type="application/x-shockwave-flash" data="flvplayer.swf" width="480"
height="360">
<param name="movie" value="flvplayer.swf" />
<param name="flashvars" value="config=config_flvplayer.txt" />
<param name="allowfullscreen" value="true" />
</object>
<! A partir de Youtube !>
<iframe width="560" height="315" src="http:/
/www.youtube.com/embed/ckrtMSZIE0c" frameborder="0"
allowfullscreen></iframe>
</body>
110
</html>
FONCTIONS ADDITIONNELLES

111