Chapitre 2 PHPv2
Chapitre 2 PHPv2
Chapitre 2 PHPv2
Plan
Partie 1 : Les structures de base en PHP
Partie 2 : Les types de données structurés en PHP: Les tableaux et les chaînes de
caractères
Partie 3 : Les fonctions et les formulaires en PHP
Partie 1
Les Structures de base en PHP
Plan
Présentation de PHP
Variables, constantes et types de données
Les structures de contrôle
L'affichage des données et les inclusions
I. Présentation
PHP est un langage de script qui s'inclut dans le langage HTML. La syntaxe du langage PHP
provient du C, du Java et du Perl, avec un petit nombre de fonctions inédites par rapport à ces
langages. Le but du langage PHP est de permettre aux développeurs de site web d'écrire
rapidement des pages web dynamiques.
PHP est un langage interprété (un langage de script) exécuté du côté serveur et non du côté
client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La
syntaxe du langage provient de celles du langage C, du Perl et de Java. Ses principaux atouts
sont:
La gratuité et la disponibilité du code source
La possibilité d'inclure le script PHP au sein d'une page HTML;
Page-1-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
La simplicité d'interfaçage avec des bases de données (de nombreux SGBD sont
supportés, mais le plus utilisé avec ce langage est MySQL, un SGBD gratuit
disponible sur les plateformes Unix, Linux, et Windows)) ;
L'intégration au sein de nombreux serveurs web (Apache, Microsoft IIS, etc.).
II. Syntaxe de base :
Pour que le script soit interprété par le serveur deux conditions sont nécessaires:
Page-2-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Page-3-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Page-4-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Dépendamment du lieu de déclaration de la variable, il est possible que celle-ci ne soit pas
accessible à certains endroits.
C’est notamment le cas des variables déclarées à l’intérieur des fonctions.
Exemple
<?php
$variable = 'Salut';
// Déclaration de la fonction
function Ma_Fonction() {
$variable = 'Bonjour';}
Ma_Fonction();
echo $variable;
// Affichera "Salut" et non "Bonjour"
?>
Variable super-globale $GLOBALS:
$GLOBALS est une variable super-globale référençant toutes les variables disponibles lors de
l’exécution du code. Cette variable tableau est donc accessible en tout temps et vous permet
d’accéder à vos variables peu importe où vous vous trouvez.
Exemple
<?php
$variable = 'Salut';
function Ma_Fonction() {
$GLOBALS['variable'] = 'Bonjour';
}
Ma_Fonction();
echo $variable;
// Affichera "Bonjour"
?>
III. Les types de données
Il n'est pas nécessaire de déclarer le type des données que l'on manipule, celui-ci est affecté
dynamiquement par PHP.
En revanche, il n'est pas inutile de connaître les différents types possibles :
1. Booléens
Un booléen (cf les expressions) exprime une valeur VRAI 'TRUE', ou FAUX 'FALSE'.
Les expressions suivantes étant strictement identiques, on ne sera pas, à priori, amené à
utiliser explicitement un type booléen :
Page-5-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
<?php
($a == 0) == TRUE;
($a == 0) != FALSE;
$a == 0;
?>
2. Entiers
Un entier (integer, ou int) est un nombre de l'ensemble des entiers naturels {..., -2, -1, 0, 1, 2,
...}. On peut l'exprimer de trois manières :
<?php
$a = 1234; /* nombre entier en base décimale */
$a = 02322; /* le même en base octale, préfixé 0 */
$a = 0x4D2; /* le même en base hexadécimale, préfixé 0x */
?>
3. Réels
Un nombre réel (float, ou double), appelé aussi "à virgule flottante", peut être exprimé de
deux manières :
<?php
$a = 1.234;
$a = 1.2e3; /* notation scientifique */
?>
4. Chaînes de Caractères
Une chaîne (ou séquence) de caractères doit être encadrée de guillemets :
simples (' ') si elle ne contient rien qui nécessite d'être échappé
doubles (" ") si l'on veut que les séquences d'échappement et les variables qu'elle contient
soient interprétées (on parle de "substitution de variables")
<?php
$version = '4.4.2';
echo "PHP version $version !"
?>
IV. Les opérateurs PHP
1. Les opérateurs de calcul
Page-6-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Résultat
Opérateur Dénomination Effet Exemple
(pour x=7)
+ Opérateur d'addition Ajoute deux valeurs $x+3 10
- Opérateur de soustraction Soustrait deux valeurs $x-3 4
Opérateur de
* Multiplie deux valeurs $x*3 21
multiplication
/ opérateur de division Divise deux valeurs $x/3 2.3333333
Met la valeur 3
Affecte une valeur à une
= opérateur d'affectation $x=3 dans la variable
variable
$x
Donne le reste de la division
% opérateur modulo $x%3 1
entière entre 2 nombres
Ces opérateurs permettent de simplifier des opérations telles que ajouter une valeur dans une
variable et stocker le résultat dans la variable. Une telle opération s'écrirait habituellement de
la façon suivante par exemple: $x=$x+2. Avec les opérateurs d'assignation il est possible
d'écrire cette opération sous la forme suivante: $x+=2. Les autres opérateurs du même type
sont les suivants:
Opérateur Effet
+= addition deux valeurs et stocke le résultat dans la variable (à gauche)
-= soustrait deux valeurs et stocke le résultat dans la variable
*= multiplie deux valeurs et stocke le résultat dans la variable
/= divise deux valeurs et stocke le résultat dans la variable
%= Donne le reste de la division deux valeurs et stocke le résultat dans la variable
|= Effectue un OU logique entre deux valeurs et stocke le résultat dans la variable
^= Effectue un OU exclusif entre deux valeurs et stocke le résultat dans la variable
&= Effectue un Et logique entre deux valeurs et stocke le résultat dans la variable
.= Concatène deux chaînes et stocke le résultat dans la variable
Page-7-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Ce type d'opérateur permet de facilement augmenter ou diminuer d'une unité une variable.
Ces opérateurs sont très utiles pour des structures telles que des boucles, qui ont besoin d'un
compteur (variable qui augmente de un en un). Un opérateur de type $x++ permet de
remplacer des notations lourdes telles que $x=$x+1 ou bien $x+=1
Page-8-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
à une valeur
Vérifie qu'une
Retourne 1 si $x est
variable est
!= opérateur de différence $x!=3 différent de 3, sinon
différente d'une
0
valeur
6. Autres opérateurs
Opérateur Dénomination Effet Syntaxe Résultat
Joint deux chaînes bout "BonjourAu
. Concaténation "Bonjour"."Au revoir"
à bout revoir"
Référencement de Permet de définir une
$ $MaVariable = 2;
variable variable
Permet d'accéder aux
Propriété d'un
-> données membres $MonObjet->Propriete
objet
d'une classe
Associe une
=> valeur à une clé
dans un tableau
Page-9-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
<?php
Syntaxe est
$a= $b =1;
[test logique] ?
( $a == $b ) ? $c= 10 :
L'opérateur [expression si vrai] :
Opérateur de test $c = 20;
?: [expression si faux]
// effectue $c = 10;
?>
Page-10-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
?>
PhP propose également une autre syntaxe pour l’instruction if : if :..endif ;
L’exemple suivant illustre cette alternative.
Exemple :
<? php
$a = 10; $b = 11;
print "a est égale à $a, b est égale à $b. ";
if ($ a > $b) :
print "a est plus grand que b";
elseif ($ a == $b) :
print "a est égal à b";
else :
print "==> a est inférieure à b.";
endif ;
?>
Dans l’exemple, les accolades ne sont pas utilisées et les conditions testées sont suivies de
deux points (:).
La dernière endif sert à signaler la fin du bloc if, remplaçant une accolade fermante}.
2. Les structures de branchement :
switch (expression) {
case resultat1 :
# instructions à exécuter si l’expression vaut resultat1...
break ;
case resultat2 :
# instructions à exécuter si l’expression vaut resultat2...
break ;
...
default :
# instructions à exécuter en dernier recours...
}
L’instruction switch équivaut à une série d’instructions if..elseif..elseif....else ; Elle est utilisée
pour comparer la même variable (ou expression) avec un grand nombre de valeurs différentes
et d’exécuter différentes parties de code suivant la valeur à laquelle elle est égale.
L’instruction break a pour but de stopper l’exécution des instructions d’une clause case
donnée
Page-11-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Exemple :
Switch ($type) {
case "Femme" :
echo "Bonjour Madame" ;
break ;
case "Homme" :
echo "Bonjour Monsieur" ;
break ;
default :
echo "Erreur !" ;
}
II. Les structures itératives
Les structures itératives (boucles) constituent un moyen d’exécuter un bloc de code un
nombre de fois donné, où jusqu’à ce qu’une condition particulière soit satisfaite.
PhP possède deux types de boucles :
• Une boucle While : Teste une condition avant ou après chaque itération et ne parcourt
de nouveau la boucle que si la condition est vérifiée.
• Une boucle for : Le nombre d’itérations est fixé une fois pour toutes, avant l’exécution
de la première boucle.
1. La boucle While :
while (condition)
{
//instructions
}
La signification d'une boucle while est très simple. Le PHP exécute l'instruction tant que
l'expression de la boucle while est évaluée comme TRUE. La valeur de l'expression est
vérifiée à chaque début de boucle, et, si la valeur change durant l'exécution de l'instruction,
l'exécution ne s'arrêtera qu'à la fin de l'itération (chaque fois que le PHP exécute l'instruction,
on appelle cela une itération).
Si l'expression du while est FALSE avant la première itération, l'instruction ne sera jamais
exécutée.
Exemple :
<?
/* Afficher tous les nombres de 1 à 10 */
$i = 1;
while ($i <= 10) {
Page-12-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Page-13-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
foreach() permet d’exécuter une série d’instructions pour chacun des éléments d’un tableau.
Prenez note que la boucle réinitialise la position du pointeur interne du tableau mais n’affecte
pas le tableau en lui-même. Il travaille en fait sur une copie de celui-ci.
Toute modification faite aux valeurs récupérées ne se répercutera pas sur le tableau en
question.
Syntaxes
<?php
foreach (tableau as valeur) commandes
foreach (tableau as clef => valeur) commandes
?>
La première syntaxe parcourt tous les éléments du tableau et assigne à la variable valeur la
valeur de l’élément en cours.
La deuxième syntaxe parcourt tous les éléments du tableau et assigne, en plus, à la variable
clef l’index de l’élément en cours.
Exemple
<?php
$tableau = array(
'Nom' => 'Xenon_54',
Page-14-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
5. BREAK et CONTINUE
1. Break
$compt=1;
while ($compt<5) {
if ($compt == 4)
break;
echo ("ligne : " + $compt + "<BR>");
$compt++;
}
echo("sortie forcée de la boucle");
ligne : 1
ligne : 2
ligne : 3
sortie forcée de la boucle
2. Continue
Page-15-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
L'instruction continue permet de sauter une instruction dans une boucle for ou while et de
continuer ensuite le bouclage (sans sortir de celui-ci comme le fait break).
$compt=1;
while ($compt<5) {
if ($compt == 3){
$compt++
continue;}
echo ("ligne : " + $compt + "<BR>");
$compt++;
}
echo("fin de la boucle");
La principale fonction de PHP est echo qui permet d’imprimer du texte dans votre document.
En réalité ce n’est pas vraiment une fonction mais une structure de langage.
Il est très important de mettre un caractère d’échappement (\) devant tous les caractères
spéciaux et délimiteurs afin de ne pas créer de Parse Error de la part du compilateur PHP.
Il confondra évidemment le dit caractère de la chaîne avec celui de la fonction, erreur souvent
commise par les programmeurs.
Exemples
Voici quelques exemples d’utilisation de PHP. Comme vous pourrez le voir, il faut insérer
votre texte entre quotes simples ou doubles à la suite de l’instruction echo.
<?php
Page-16-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
?>
Afficher du HTML
Afficher du JavaScript
<?php
echo '<script>alert("Aucun enregistrement"); </script>';
?>
Afficher une variable
<?php
<?php
?>
II. Les Caractères spéciaux
Voici la liste des caractères réservés qui, précédés du signe "\" dans une chaîne de caractères,
ont une signification particulière :
Séquence Valeur
\n Nouvelle ligne
\r Retour à la ligne
\t Tabulation horizontale
Page-17-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
\\ Antislash
\$ Caractère $
2. include:
Evalue et insère à chaque appel (même dans une boucle) le contenu du fichier passé en argument.
Exemple :
include(‘’fichier.php’’);
Page-18-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Partie 2
Les types de données structurés en PHP:
Les tableaux et les chaînes de caractères
Plan
Les tableaux en PHP
Les chaines de caractères
Les expressions régulières
Les tableaux numérotés permettent de stocker une série d'éléments du même type, comme par
exemple des prénoms. Chaque élément du tableau contiendra alors un prénom.
Il y a plusieurs façons d'insérer des éléments dans un tableau. On peut tout simplement leur
affecter une valeur, de la même façon que pour une autre variable.
Soit l’exemple de tableau suivant, contenu de la variable $prenoms :
Clé Valeur
0 Ahmed
Page-19-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
1 Aya
2 Aymen
3 Anas
4 Bedis
... ...
Le tableau numéroté peut être initialisé manuellement case par case de la façon
suivante:
Code : PHP
<?php
$prenoms[0] = 'Ahmed';
$prenoms[1] = 'Aya';
$prenoms[2] = 'Aymen';
…..
?>
Le même code aurait pu être écrit sans spécifier des indices explicites ( avec des
crochets vides). Comme aucun indice n’a été spécifié de façon explicite entre les
crochets [] , les éléments possèdent automatiquement des indices respectifs par défaut
0, 1 et 2.
Code : PHP
<?php
$prenoms[] = 'Ahmed'; // Créera $prenoms[0]
$prenoms[] = 'Aya'; // Créera $prenoms[1]
$prenoms[] = 'Aymen'; // Créera $prenoms[2]
…..
?>
Code : PHP
<?php
// La fonction array permet de créer un array
$prenoms = array ('Ahmed', 'Aya', 'Aymen', 'Anas', 'Bedis');
?>
L'ordre a beaucoup d'importance. Le premier élément ("Ahmed") aura le n°0, ensuite Aya le
n°1,etc.
Page-20-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Pour afficher un élément, il faut donner sa position entre crochets après $prenoms.
Exemple: pour afficher "Aya", on doit écrire :
1 <?php
2 echo $prenoms[1];
3 ?>
Les tableaux associatifs permettent de découper une donnée en plusieurs sous-éléments. Par
exemple, une coordonnée peut être découpée en nom, prénom, nom de rue, ville...
Les tableaux associatifs fonctionnent sur le même principe, sauf qu'au lieu de numéroter les
cases, on va les étiqueter en leur donnant à chacune un nom différent.
Par exemple, supposons que dans un seul array, nous voulons enregistrer les coordonnées de
quelqu'un (nom, prénom, adresse, ville etc...). Si l'array est numéroté, comment savoir que le
n°0 est le nom, le n°1 le prénom, le n°2 l'adresse ?... C'est là que deviennent utiles les
tableaux associatifs.
Code : PHP
1 <?php
2 // On crée notre array $coordonnees
3 $coordonnees = array (
4 'prenom' => 'Aymen',
5 'nom' => 'Gharbi',
6 'adresse' => '3 Rue sassi bellil',
7 'ville' => 'Ariana');
8 ?>
Vous remarquez qu'on peut utiliser une flèche (=>) pour dire "associé à" afin de spécifier les
indices particuliers des éléments d’un tableau.
Clé Valeur
prenom Aymen
Page-21-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
nom Gharbi
adresse 3 Rue sassi bellil
ville Ariana
Il est aussi possible de créer le tableau case par case comme ceci :
Code : PHP
1 <?php
2 $coordonnees['prenom'] = 'Aymen';
3 $coordonnees['nom'] = 'Gharbi';
4 $coordonnees['adresse'] = '3 Rue Sassi bellil’;
5 $coordonnees['ville'] = 'Ariana';
6 ?>
Autre Exemple :
<?php
$tab2 = array('couleur' => 'rouge','gout' => 'sucre', 'forme' => 'rond','nom' =>
'pomme');
?>
3. Parcourir un tableau
On peut procéder de trois moyens différents pour explorer un tableau selon qu’il est
numéroté ou associatif.
Soit :
• La boucle for
Page-22-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
• La boucle foreach
• La fonction print_r (utilisée principalement pour le débogage)
a . La boucle for
Pour parcourir un tableau numéroté avec une boucle for il faut incrémente un compteur à
partir de 0 :
1 <?php
2 // On crée notre array $prenoms
3 $prenoms = array ('Ahmed', Aya', 'Aymen', 'Anas', 'Bedis');
4
5 // Puis on fait une boucle pour tout afficher :
6 for ($indice = 0; $indice < 5; $indice++)
7 {
8 echo $prenoms[$indice] . '<br />'; // affichera $prenoms[0], $prenoms[1] etc...
9 }
10 ?>
b. La boucle foreach
La boucle foreach est plus adaptée aux tableaux. C'est une sorte de boucle for spécialisée
dans les tableaux.
foreach va passer en revue chaque ligne du tableau, et lors de chaque passage, il va mettre la
valeur de cette ligne dans une variable temporaire (par exemple $element).
1 <?php
2 $prenoms = array ('Ahmed', Aya', 'Aymen', 'Anas', 'Bedis');
3
4 foreach($prenoms as $element)
5 {
6 echo $element . '<br />'; // affichera $prenoms[0], $prenoms[1] etc...
7 }
8 ?>
A chaque tour de boucle, la valeur de l'élément suivant est mise dans la variable $element. On
peut donc utiliser $element uniquement à l'intérieur de la boucle afin d'afficher l'élément en
cours.
L'avantage de foreach est qu'il permet aussi de parcourir les tableaux associatifs.
1 <?php
2 $coordonnees = array (
3 'prenom' => 'Aymen',
4 'nom' => 'Gharbi',
5
'adresse' => '3 Rue sassi bellil',
6
'ville' => 'Ariana');
7
8
9 foreach($coordonnees as $element)
10 {
Page-23-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
foreach va mettre tour à tour dans la variable $element le prénom, le nom, l'adresse et la ville
contenus dans l'array $coordonnees.
On met donc entre parenthèses :
Toutefois, avec cet exemple on ne récupère que la valeur. Or, on peut aussi récupérer la clé
de l'élément. On doit dans ce cas écrire foreach comme ceci :
A chaque tour de boucle, on disposera non pas d'une mais de deux variables :
• $cle : elle contiendra la clé de l'élément en cours d'analyse ("prenom", "nom", etc.).
• $element : il contiendra la valeur de l'élément en cours ("François", "Dupont", etc.).
Exemple:
1 <?php
2 $coordonnees = array (
3 'prenom' => 'Aymen',
4 'nom' => 'Gharbi',
5 'adresse' => '3 Rue sassi bellil',
6 'ville' => 'Ariana');
7
8 foreach($coordonnees as $cle => $element)
9 {
10 echo '[' . $cle . '] vaut ' . $element . '<br />';
11 }
12 ?>
Page-24-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Remarque : Cette commande ne renvoie pas de code HTML comme <br /> pour les retours à
la ligne. Pour bien voir les retours à la ligne, il faut donc utiliser la balise HTML <pre> qui
nous permet d'avoir un affichage plus correct.
1 <?php
2 $coordonnees = array (
3 'prenom' => 'Aymen',
4 'nom' => 'Gharbi',
5 'adresse' => '3 Rue sassi bellil',
6 'ville' => 'Ariana');
7
8 echo '<pre>';
9 print_r($coordonnees);
10 echo '</pre>';
11 ?>
Tout tableau possède un pointeur interne. Ce curseur interne conserve la trace de l’élément
actuellement actif.
Exemple :
$pays[50] = ″fr″ ;
$pays[20] =″de″ ;
$pays[10] =″us″ ;
$pays[] =″ch″ ;
$valeur = current($pays) ;
Comme ce tableau vient d’être créé, l’élément actif est le premeir, si bien que ce code va
imprimer : L’élément 50 est égal à fr. Remarquez que ″fr″ est le premier élément du tableau,
Page-25-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
même si ″de″ et ″us″ possèdent des indices inférieurs, car c’est le premier à avoir été affecté
au tableau.
Les deux fonctions each() et list() peuvent être utilisées conjointement afin de parcourir un
tableau, même si les indices ne sont pas séquentiels.
Exemple :
reset ($pays);
while (list ($cle, $valeur) = each ($pays)) {
echo ("L'élément $cle est égal à $valeur <br>");
}
Cela signifie : Pour chaque élément du tableau, affectez comme valeur à $cle celle de l’indice
(ou de la clé) de l’élément, et à $valeur la valeur de celui-ci.
Page-26-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Voici notre problème : on a un tableau, mais on ne sait pas si la clé qu'on cherche est dedans.
On va utiliser pour vérifier ça la fonction array_key_exists qui va parcourir le tableau pour
nous et nous dire si le tableau contient cette clé. On doit lui donner d'abord le nom de la clé à
rechercher, puis le nom de l'array dans lequel on fait la recherche :
La fonction renvoie un booléen, c'est à dire true (vrai) si la clé est dans l'array, et false (faux)
si la clé ne se trouve pas dans l'array. Ca nous permet de faire un test facilement avec un if :
1 <?php
2 $coordonnees = array (
3 'prenom' => 'Aymen',
4 'nom' => 'Gharbi',
5 'adresse' => '3 Rue sassi bellil',
6 'ville' => 'Ariana');
7
8 if (array_key_exists('nom', $coordonnees))
9 {
10 echo 'La clé "nom" se trouve dans les coordonnées !';
11 }
12
13 if (array_key_exists('pays', $coordonnees))
14 {
15 echo 'La clé "pays" se trouve dans les coordonnées !';
16 }
17
18 ?>
Page-27-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
1 <?php
2 $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
3
4 if (in_array('Myrtille', $fruits))
5 {
6 echo 'La valeur "Myrtille" se trouve dans les fruits !';
7 }
8
9 if (in_array('Cerise', $fruits))
10 {
11 echo 'La valeur "Cerise" se trouve dans les fruits !';
12 }
13 ?>
On ne voit que le message pour la Cerise, tout simplement parce que in_array a
renvoyé true pour "Cerise" et false pour "Myrtille".
1 <?php
2 $fruits = array ('Banane', 'Pomme', 'Poire', 'Cerise', 'Fraise', 'Framboise');
3
4 $position = array_search('Fraise', $fruits);
5 echo '"Fraise" se trouve en position ' . $position . '<br />';
6
7 $position = array_search('Banane', $fruits);
8 echo '"Banane" se trouve en position ' . $position;
9 ?>
6. Trier un tableau :
La plupart de ces fonctions ne retournent pas de valeur mais modifient simplement le tableau
passé en paramètre.
Les fonctions sort() et rsort() permettent de trier un tableau par valeur croissante ou
décroissante. Les indices sonts changés.
Exemple :
<?
$pays = array ("us" => "Etats-Unis",
Page-28-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Cela réorganise le tableau afin que les valeurs soient en ordre alphabétique et que les indices
reflètent également cet ordre.
On peut également trier un tableau par indice, à l'aide des fonctions ksort() et krsort(), qui
s'utilisent de la même manière que les fonctions précédentes.
Exemple :
<?
$pays = array ("e" => "Etats-Unis" ,
"d" => "Suisse",
"c" => "Canada",
"b" => "France",
"a" => "Allemagne");
ksort ($pays);
while (list ($cle, $val) = each ($pays)) {
echo "L'élément $cle est égal à; $val<BR>\n";
}
Page-29-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
?>
Cet exemple imprime :
L’élément a est égal à Allemagne
L’élément b est égal à France
L’élément c est égal à Canada
L’élément d est égal à Suisse
L’élément e est égal à Etats-Unis
La fonction usort() est un peu plus complexe. Elle prend un tableau comme argument, comme
toutes les autres fonctions de tri, mais accepte également un second argument.
Il s’agit d’une fonction définie par l’utilisateur et indiquant à usort() comment effectuer le tri.
L’exemple ci-dessous trie le tableau selon la longueur de la chaîne contenue dans ses
éléments.
Exemple :
<?
function par_taille ($a, $b) {
$l_a = strlen ($a);
$l_b = strlen ($b);
if ($l_a == $l_b) return 0;
return ($l_a < $l_b) ? -1 : 1;
}
$pays = array ("e" => "Etats-Unis" ,
"d" => "Suisse",
"c" => "Canada",
"b" => "France",
"a" => "Allemagne");
usort ($pays, par_taille);
while (list ($cle, $val) = each ($pays)) {
echo "L'élément $cle est égal à $val<BR>\n";
}
?>
Ce code imprime :
L’élément 0 est égal à Suisse
L’élément 1 est égal à Canada
Page-30-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Il existe des caractères repérés par un code ASCII spécial permettant d'effectuer des
opérations particulières. Ces caractères peuvent être représentés plus simplement en langage
PHP grâce au caractère '\' suivi d'une lettre, qui précise qu'il s'agit d'un caractère de contrôle:
Caractère Description
\" Guillemet
\\ Barre oblique inverse (antislash)
\r retour chariot
\n retour à la ligne
\t Tabulation
En effet, certains de ces caractères ne pourraient pas être représentés autrement (un retour à la
ligne ne peut pas être représenté à l'écran). D'autre part, les caractères \ et " ne peuvent pas
faire partie en tant que tel d'une chaîne de caractère.
Remarque :
Page-31-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Les chaînes placées entre doubles guillemets sont sujettes aux substitutions de variables et
au traitement à l’aide de séquences d’échappement, tandis que les chaines entre guillemets
simples ne le sont pas.
Exemple :
echo (" bienvenue \n à notre site ") ; donne bienvenue retour à la ligne à notre site
echo (' bienvenue \n à notre site ') ; donne bienvenue \n à notre site
Page-32-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Cette fonction retire les espaces blancs de début et de fin de chaîne, et retourne la chaîne
nettoyée. Les espaces blancs sont : "\n", "\r", "\t", "\v", "\0", et " " (espace).
Exemple :
echo(trim(″ chaîne exemple ″)) ;
//imprime ‘chaîne vide’
• implode()
string implode (string separator, array tableau)
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.
Exemple :
• explode()
array explode (string separator, string string)
Retourne un tableau qui contient les éléments de la chaîne string, séparés par separator.
Exemple :
<?php
$chaine="Nom|Prenom|Adresse";
$champs=explode("|",$chaine);
$boucle=0;
while($boucle<sizeof($champs)){
echo$champs[$boucle];
$boucle++;
}?>
• str_replace()
string str_replace(modèle, remplacement, chaîne)
Remplace toutes les occurrences de modèle dans chaîne par remplacement
Exemple :
<?
$chaine="tout est rouge";
$chaine=str_replace("rouge", "bleu", $chaine);
echo $chaine;
?>
Imprime : ″tout est bleu″
Autres fonctions:
Page-33-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
1.Définition:
Une expression régulière permet de caractériser le format d'une chaîne de caractère. Plus
précisément, une expression régulière est un motif ou une série de motifs de caractères. Le but
étant de rechercher ou de remplacer un motif dans une chaîne de caractère.
Une expression régulière est une chaîne de caractères contenant des caractères spéciaux et des
caractères standards. Il existe une grande variété de caractères spéciaux, le plus facile est de
les voir au fur et à mesure à l'aide d'exemples.
Exemples :
Exemples :
Page-34-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Exemples :
A noter que le premier nombre de la limite ("{0,2}", et pas "{,2}") est obligatoire. Les
symboles vus précédemment ('*', '+', and '?') sont équivalents à "{0,}", "{1,}", et "{0,1}".
Exemple :
Exemple :
Exemple :
Page-35-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Les crochets [ ] définissent une liste de caractères autorisés (ou interdits). Le signe -
permet, quant à lui, de définir un intervalle. Le caractère ^ après le premier crochet
indique une interdiction.
Exemples :
Pour rechercher un caractère faisant partie des caractères spéciaux, il suffit de le faire
précéder d'un antislash (un antislash doit donc être doublé), SAUF entre crochets.
En effet, dans les crochets, chaque caractère représente ce qu'il est. Pour représenter un ] il
faut le mettre en premier (ou après un ^ si c'est une interdiction), un - se met en premier ou en
dernier.
Exemples :
Page-36-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Plan
Les fonctions
Les formulaires
A. Les fonctions
En PHP toute fonction doit être préalablement définie avant d’être utilisée. Les valeurs sont
renvoyées en utilisant une instruction de retour optionnelle. Tous les types de variables
peuvent être renvoyés (tableaux et objets compris).
Exemple :
function carre($nombre)
{
return $nombre * $nombre ;
}
echo carre(3) ; # affiche la valeur 9
Page-37-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
function imprime_double($n) {
$n = $n * 2 ;
echo($n) ;}
Page-38-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
$a = 5 ;
echo (″$a″) ; //imprime 5
imprime_double($a) ; //imprime 10
echo($a) ; //imprime de nouveau 5
La valeur de $a n’est pas modifiée, même après avoir été transmise à imprime_double(),
puisque l’argument a été transmis comme valeur.
En revanche, si un argument est transmis par référence, toute modification apportée à la
variable paramètre modifie la variable de l’instruction d’appel.
Pour passer un argument par référence, il faut ajouter un '&' devant l'argument dans la
déclaration de la fonction.
Exemple :
function augmentation(&$salaire, $pourcent) {
//augmente $salaire de $pourcent
$salaire+=$salaire * $pourcent/100 ;
}
$sal = 50000 ;
echo(″Salaire avant augmentation : $sal) ; //Imprime 50000
augmntation($sal, 4) ;
echo (″Salaire après augmentation : $sal<BR>\n″) ; //Imprime 52000
Si vous souhaitez passer une variable par référence à une fonction mais de manière
ponctuelle, vous pouvez ajouter un '&' devant l'argument dans l'appel de la fonction.
Exemple :
function augmentation($salaire, $pourcent) {
//augmente $salaire de $pourcent
$salaire+=$salaire * $pourcent/100 ;
}
$sal = 50000 ;
echo(″Salaire avant augmentation : $sal) ; //Imprime 50000
augmntation(&$sal, 4) ;
echo (″Salaire après augmentation : $sal<BR>\n″) ; //Imprime 52000
Page-39-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Page-40-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Une variable statique est une variable locale qui ne perd pas sa valeur à chaque fois que la
fonction est exécutée. On utilise, comme en C, l’attribut static pour déclarer une telle variable.
Ce type de variable est très utile pour la création de fonctions récursives.
Exemple :
function compte () {
static $compteur = 0 ;
$compteur++ ;
echo "$compteur " ;
if ($compteur < 10) compte() ;
}
compte() ;
Lors du tout premier appel de la fonction compte(), la variable statique $compteur va être
créée et se voir affecter la valeur spécifiée (ici 0), mais par la suite elle conservera sa valeur
entre chaque appel de la fonction : La variable ne sera pas réinitialisée.
Remarque : Lorsque vous souhaitez qu'une fonction retourne plusieurs valeurs, le plus
simple est d'utiliser un tableau :
<?
function nom_fonction()
{.....
return array( $variable1, $variable2, $variable3 ); // on retourne les valeurs voulues
dans un tableau
}
$retour = nom_fonction();
echo "$retour[0] - $retour[1] - $retour[2]";
?>
B. Les formulaires
I. Champ de texte envoyé avec POST
C'est la méthode à utiliser par défaut. Les données sont transmises de façon non visible
du navigateur au serveur. La syntaxe au niveau du formulaire est :
<form action="newFile.php" method="post">
La syntaxe au niveau du contrôle de formulaire est :
<input type="text" name="nom_de_variable"
Page-41-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Dans le fichier newFile.php, les données sont récupérées dans le tableau $_POST :
$_POST["nom_de_variable"]
Cette méthode est à proscrire pour les passages des mots de passe et autres
informations 'sensibles', par contre elle est pratique pour la mise au point puisque l'on
voit dans l'URL les valeurs envoyées au serveur. La syntaxe au niveau du formulaire
est :
<form action="newFile.php" method="get">
La syntaxe au niveau du contrôle est, comme précédemment :
<input type="text" name="nom_de_variable"
Les formulaires GET s'apparentent, au niveau du fonctionnement interne de HTML, au
passage de parametre par URL, car c'est par l'URL que sont transmises les
informations du formulaire. Comme dans le passage par l'URL, les données sont à
récupérer dans le fichier newfile.php dans le tableau $_GET avec cette syntaxe :
$_GET['var_a'] et $_GET['var_b']
Ce type de contrôle est à utiliser lorsque l'on veut que l'internaute ne puisse choisir
qu'une option parmi plusieurs
La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou
POST)
<input type='radio' name=monBoutonRadio value='valeur_a'>Label_a
<input type='radio' name=monBoutonRadio value='valeur_b'>Label_b
..............................................................
Autant de lignes que de boutons, à chaque bouton correspondant une valeur 'valeur_x'
et un label, mais tous les boutons doivent porter le même nom pour un ensemble de
boutons donné. La valeur choisie va se retrouver dans la variable
$_POST['monBoutonRadio'], qui va contenir la valeur "valeur_x" suivant le bouton
qui est coché
Page-42-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Ce type de contrôle est à utiliser lorsque l'on veut que l'internaute puisse choisir
plusieurs cases à cocher à la fois La syntaxe au niveau du contrôle est : (peut
fonctionner avec un formulaire GET ou POST)
V. Liste de choix
Liste déroulante à choix unique. On ne peut sélectionner qu'un seul élément de la liste
La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire GET ou
POST)
<SELECT NAME=maListe>
<OPTION value=nom_a>label_a</OPTION>
<OPTION value=nom_b>label_b</OPTION>
...........................................
Autant de lignes que d'éléments dans la liste. On voit que l'on a un seul nom On
récupère la valeur (nom_x) dans $_POST['maListe']
Liste déroulante à choix multiple : l'internaute peut sélectionner plusieurs options dans
la liste La syntaxe au niveau du contrôle est : (peut fonctionner avec un formulaire
GET ou POST)
<SELECT NAME=maListe[] size=7 multiple>
Page-43-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
<OPTION value=valeur_a>label_a</OPTION>
<OPTION value=valeur_b>label_b</OPTION>
..............................................
Autant de lignes que d'éléments dans la liste. On récupère la valeur dans le tableau
$_POST['maListe'] Attention : bien mettre les crochets [] à la suite du nom dans la
déclaration HTML. On ne récupère pas une valeur mais directement un tableau de
valeurs.
Pour diminuer le nombre de fichiers sur le serveur (peut avoir un impact sur la
rapidité : si le nombre de fichiers augmente, le serveur est plus lent), on peut
n'utiliser qu'un seul fichier pour le formulaire et le traitement du formulaire; pour
réaliser cela il faut remplacer le nom du fichier dans la balise action:
• Soit par le nom du fichier en cours, mais c'est dangereux, si l'on change le nom
du fichier, le formulaire ne fonctionnera plus.
• Soit par la variable $_SERVER[PHP_SELF] dans laquelle est stockée en
permanence le nom du fichier en cours d'exécution.
Page-44-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
Un seul fichier source pour saisir et traiter le formulaire (réception des données)
<?php
echo "Saisir ici votre texte : ";
echo "<form action=$_SERVER[PHP_SELF] method=post>";
echo "<textarea name='myLife' cols=20 rows=4>Votre texte ici</textarea>";
echo "<input type='submit' value='valider'></form>";
echo "Voici ce que vous avez saisi :<br/>";
echo "<br/><i>".$_POST['myLife']."</i>";
?>
On peut passer des informations lors de la construction du lien d'une page vers
une autre; la syntaxe est la suivante :
<?php
echo "<a href=file.php?var_a='$var_1'&var_b='$var_2'>Passer les
variables</a>";
?>
Les variables passées de la page actuelle vers la suivante sont $var_1 et $var_2
Dans la page suivante les valeurs seront à récupérer dans $_GET['var_a'] et
$_GET['var_b']
A noter le & sert pour séparer les paramètres à passer
Exemple sur le passage de paramètres par URL:
Page-45-
ISET CHARGUIA Cours application web HAMZA Y. & MAALOUL A.
?>
Page-46-