Les fonctions et structures de contrôle
Les conditions
1. if
Les instructions de type condition permettent d’exécuter du code si une condition est vraie.
Par exemple, si le prénom est égal à Robert, afficher "Bienvenue" :
<?php
$prenom = 'Robert'; //déclaration de la variable $prenom
if ($prenom == 'Robert') //test de la variable $prenom
{
echo 'Bienvenue';
}
?>
Ci-dessus, la valeur Robert est affectée à la variable $prenom puis cette variable est testée à l’aide de l’instruction if.
La syntaxe est donc :
if (condition) { instruction }
Notez que :
-
"est égal à" se note ==.
-
"est différent de" se note !=.
-
"est inférieur à" se note <.
-
"est supérieur à" se note >.
-
"est inférieur ou égal à" se note <=.
-
"est supérieur ou égal à" se note >=.
L’instruction sinon se note else.
Par exemple, si le prénom est égal à Robert, afficher "Bienvenue", sinon "A bientôt" :
<?php
$prenom = 'Toto'; //déclaration de la variable $prenom
if ($prenom == 'Robert') //test de la variable $prenom
{
echo 'Bienvenue';
}
else
{
echo 'A bientôt';
}
?>
Affiche :
A bientôt |
En effet, le code teste si la variable $prenom est égale à Robert, puis comme ce n’est pas le cas, le code passe dans le else (sinon) et exécute echo "A bientôt";.
Enfin la dernière instruction pour les conditions est else if appelée sinon si.
Cela permet de tester d’autres conditions non testées par le if.
Par exemple, si le prénom est égal à Robert, afficher "Bienvenue", sinon s’il est égal à Toto, afficher "Bonjour", sinon "A bientôt" :
<?php
$prenom = 'Toto'; //déclaration de la variable $prenom
if ($prenom == 'Robert') //test de la variable $prenom
{
echo 'Bienvenue';
}
else...
Les boucles
1. for
Une boucle permet de répéter x fois une exécution de code.
Par exemple, si vous voulez afficher dix fois "Bonjour", il suffit d’écrire avec une boucle for :
<?php
for ($i = 1; $i <= 10; $i++)
{
echo 'Bonjour <br />';
}
?>
$i est une variable représentant le compteur de la boucle. Vous n’êtes pas obligé d’appeler votre variable $i mais par convention c’est le nom employé.
La syntaxe est donc :
for ($i=nombre de départ ; $i <= nombre d'arrivée ; incrément)
{
instructions
}
$i++ est équivalent à $i=$i+1 et représente l’incrémentation de $i. Vous pouvez écrire $i=$i+2 pour incrémenter de 2 ou $i=$i-1 pour décrémenter.
Autre exemple : pour écrire les nombres entre 100 et 150, vous avez le code suivant :
<?php
for ($i = 100; $i <= 150; $i++)
{
echo $i.'<br />';
}
?>
L’instruction echo $i.’<br />’; est répétée 50 fois avec à chaque fois $i augmentant de 1.
Le <br /> permet de sauter une ligne entre chaque nombre pour ne pas les afficher tous à la suite.
L’instruction break permet d’arrêter...
Les tableaux
1. Tableaux numériques
Un tableau est comme une variable mais pouvant stocker plusieurs valeurs.
Un tableau est défini par une clé (appelée indice) et une valeur :
Pour créer ce tableau, il faut écrire :
<?php
$tableau = array('Jean','Robert','Paul','Joe','Alain');
?>
Ici, le tableau s’appelle $tableau, mais vous pouvez bien sûr l’appeler autrement.
Vous pouvez aussi accéder directement à la valeur d’un tableau grâce à son indice avec cette syntaxe :
<?php
echo $tableau[0];
?>
Affiche :
Jean |
En effet, $tableau[x] est une variable avec pour valeur le xème élément du tableau.
Attention : les indices des tableaux commencent à 0 !
Pour remplacer la chaîne de caractères ’Robert’ par ’Nadia’ à l’indice 1 du tableau, il faut écrire :
<?php
$tableau[1] = 'Nadia';
?>
Il est aussi possible de créer un tableau vide et de le remplir de cette façon :
<?php
$tableau = array();
$tableau[0] = 'Jean';
$tableau[1] = 'Robert';
$tableau[2] = 'Paul';
$tableau[3] = 'Joe';
$tableau[4] = 'Alain';
?>
ou de cette façon :
<?php
$tableau = array();
$tableau[] = 'Jean';
$tableau[] = 'Robert';
$tableau[] = 'Paul';
$tableau[] = 'Joe';
$tableau[] = 'Alain';
?>
ou encore :
<?php
$tableau = ['Jean','Robert','Paul','Joe','Alain'];
?>
PHP remplit automatiquement les indices et cela revient au même que d’écrire :
<?php
$tableau = array('Jean','Robert','Paul','Joe','Alain');
?>
2. Tableaux associatifs
Dans un tableau associatif, c’est vous qui décidez de la clé à mettre dans celui-ci.
Par exemple :
Dans cet exemple, la clé peut prendre n’importe quelle valeur. Ce n’est pas forcément un nombre.
Ce type de tableau s’écrit :
<?php
$tableau = array('A1'=>'Jean','B4'=>'Robert',3=>'Paul', ...
Traitement de chaînes de caractères
1. Les fonctions de manipulation de chaîne
Dans ce chapitre, il est question de toutes les fonctions PHP permettant de manipuler les chaînes de caractères.
a. strlen()
La fonction strlen() retourne la longueur d’une chaîne de caractères.
Par exemple :
<?php
$nom = "Robert";
$longueur = strlen($nom);
echo "La longueur de la chaîne est : ".$longueur;
?>
Affiche :
La longueur de la chaîne est : 6 |
Sa syntaxe est donc :
$longueur= strlen($chaine);
Autre exemple :
<?php
$nom = " Bonjour, Robert ";
$longueur = strlen($nom);
echo "La longueur de la chaîne est : ".$longueur;
?>
Affiche :
La longueur de la chaîne est : 18 |
En effet, les espaces sont aussi comptés.
b. substr()
La fonction substr() retourne un morceau de la chaîne à partir d’une position et d’une certaine longueur donnée.
Par exemple :
<?php
$nom = "Robert";
$morceau = substr($nom,2,3);
echo "Le morceau de la chaîne est : ".$morceau;
?>
Affiche :
Le morceau de la chaîne est : ber |
La position du début commence à 0.
Il n’est pas nécessaire d’indiquer la longueur. La fonction retourne alors les caractères jusqu’à la fin de la chaîne de caractères.
Sa syntaxe est donc :
$morceau_chaine = substr($chaine,$position_debut,longueur_chaine);
Autre exemple :
<?php
$nom = "Bonjour, je m'appelle Robert";
$morceau = substr($nom,22);
echo "Le morceau de la chaîne est : ".$morceau;
?>
Affiche :
Le morceau de la chaîne est : Robert |
En effet, en n’indiquant pas le dernier paramètre, la fonction prend la chaîne de caractères jusqu’à sa fin.
c. strstr()
La fonction strstr() retourne un morceau de la chaîne à partir d’un caractère jusqu’à la fin de la chaîne.
Par exemple :
<?php
$email = "robert.dupont@france.fr";
$morceau = strstr($email,'@');
echo "Le morceau de la chaîne est : ".$morceau;
?>
Affiche :
Le morceau de la chaîne est : @france.fr |
La fonction...
Les opérateurs
1. Les opérateurs de chaîne
a. La concaténation
Vous avez eu l’occasion de le voir dans le chapitre Les bases du langage PHP : la concaténation se note avec . (point) ou , (virgule). Elle permet d’attacher deux chaînes de caractères.
Par exemple :
<?php
$prenom = "Jean";
$nom = "Dupont";
echo $prenom." ".$nom; //concaténation du prénom + un espace + le nom
?>
Affiche :
Jean Dupont |
b. L’assignation
Vous l’utilisez déjà depuis le début dans tous les exemples.
L’assignation se note avec le signe =. Elle permet d’affecter une valeur à une variable.
Vous pouvez aussi utiliser la combinaison .= qui permet de concaténer une chaîne à une variable et de l’affecter à cette variable.
Par exemple :
<?php
$prenom = "Jean";
$nom = "Dupont";
$prenom .= " "; //concaténation du prénom + un espace
$prenom .= $nom; //concaténation du prénom + le nom
echo $prenom;
?>
est équivalent à :
<?php
$prenom = "Jean";
$nom = "Dupont";
$prenom = $prenom." "; //concaténation du prénom + un espace
$prenom = $prenom.$nom; //concaténation du prénom + le nom
echo $prenom;
?>
Affiche :
Jean Dupont |
2. Les opérateurs arithmétiques
a. L’addition
L’opérateur se note +.
Par exemple :
<?php
$nombre = 11;
$resultat = $nombre + 5;
echo $resultat;
?>
Affiche :
16 |
Depuis PHP 8.0, les opérateurs d’addition (+), de soustraction (-) et de division (/) ont une priorité plus élevée que l’opérateur de concaténation (.).
Par exemple :
<?php
echo "Somme: ". 3 + 2;
?>
Affiche :
Somme : 5 |
b. La soustraction
L’opérateur se note -.
Par exemple :
<?php
$nombre = 11;
$resultat = $nombre - 5;
echo $resultat;
?>
Affiche :
6 |
c. La multiplication
L’opérateur se note *.
Par exemple :
<?php
$nombre = 11;
$resultat = $nombre * 5;
echo $resultat;
...
Les fonctions
1. Création
Les fonctions permettent de réutiliser du code PHP plusieurs fois. Par exemple, si vous avez une page web avec le prix HT de différents produits, vous allez créer une fonction qui vous calcule le prix TTC de chaque produit. Cela évite d’écrire le calcul en PHP sur chaque ligne. En développement, il faut essayer de factoriser (c’est-à-dire de regrouper) le code. Ainsi, sa maintenance est plus facile. En effet, plus vous écrivez du code, plus vous risquez de faire des erreurs.
La syntaxe pour créer une fonction est :
function nom_de_la_fonction ($paramètre) { }
Il ne faut jamais mettre d’espaces ni de caractères spéciaux dans le nom d’une fonction.
Le paramètre est aussi appelé argument.
Essayez de nommer la fonction avec des mots expliquant ce que fait la fonction, séparés par le symbole _ ou avec des majuscules : nom_de_la_fonction ou NomDeLaFonction.
Par exemple :
<?php
function calcul_ttc($prix_ht) {
return $prix_ht * 1.2;
}
?>
Cette fonction calcule le prix TTC à partir du prix HT passé en paramètre et retourne le résultat par l’intermédiaire du mot-clé return. Une fonction n’est pas obligée de retourner un résultat, elle peut juste servir à afficher un message par exemple.
Pour appeler cette fonction, il suffit d’écrire par exemple :
<?php
calcul_ttc(12);
?>
Soit au final :
<?php
function calcul_ttc($prix_ht) {
return $prix_ht * 1.2;
}
$prix_ttc = calcul_ttc(12);
echo "12 euros HT correspondent à ".$prix_ttc." euros TTC";
?>
Affiche :
12 euros HT correspondent à 14.4 euros TTC |
En effet, le nombre 12 est passé en paramètre de la fonction donc $prix_ht devient égal à 12, puis la fonction retourne 12*1.2 (14.4) dans la variable $prix_ttc.
Il est possible de créer des fonctions qui prennent plusieurs paramètres ou bien aucun paramètre. Il n’est pas possible d’avoir des arguments du même nom.
Par exemple, voici une fonction qui prend plusieurs paramètres et retourne une valeur :
<?php
function assemble_mot($mot1,$mot2,$mot3)...
Les dates
Dans cette section, il est question de toutes les fonctions PHP permettant de manipuler les dates. En effet, souvent les dates sont récupérées dans un format suivant la langue de votre système d’exploitation ou de votre base de données et vous êtes obligé de la retransformer selon vos besoins.
-
La fonction time() retourne l’heure courante, mesurée en secondes depuis le début de l’époque UNIX (1er janvier 1970 00:00:00 GMT). Cette heure est aussi appelée timestamp UNIX.
Par exemple :
<?php
echo time();
?>
Affiche :
1680618956 |
Sa syntaxe est donc :
time()
Cette fonction est surtout utilisée pour effectuer des calculs sur des dates comme par exemple pour trouver la durée d’un traitement en base de données.
-
La fonction date() retourne la date dans le format passé en paramètre.
Par exemple :
<?php
echo date('d.m.y');
?>
Affiche :
04.04.23 |
Sa syntaxe est donc :
$date_du_jour = date($format)
avec $format une chaîne contenant les lettres permettant de définir le format.
Voici la liste des principaux formats à utiliser dans la fonction date. Cette liste est non exhaustive et vous trouverez plus d’informations à cette adresse : http://php.net/manual/fr/function.date.php
Jour
J |
Jour du mois sur deux chiffres sans les zéros initiaux 1 à 31. |
d |
Jour du mois sur deux chiffres avec un zéro initial en fonction du jour 01 à 31. |
l |
Jour de la semaine en anglais Sunday à Saturday. |
w |
Jour de la semaine au format numérique 0 (dimanche) à 6 (samedi). |
z |
Jour de l’année 0 à 366. |
Semaine
W |
Numéro de semaine dans l’année (les semaines commencent le lundi). Exemple : 42 (la 42ème semaine de l’année). |
Mois
F |
Mois, textuel, version longue en anglais, comme January ou December. |
m |
Mois au format numérique, avec zéros initiaux 01 à 12. |
n |
Mois sans les zéros initiaux 1 à 12. |
t |
Nombre de jours dans le mois 28 à 31. |
Année
L |
Est-ce que l’année est bissextile : 1 si bissextile, 0 sinon. |
Y |
Année sur 4 chiffres (par exemple 1999 et 2003). |
y |
Année sur 2 chiffres (par exemple 99 et 03). |
Heure
a |
Ante méridien et Post méridien (minuscules)... |
Les fichiers
1. Introduction
Il est parfois très utile de stocker des informations dans un fichier sur le serveur plutôt que dans une base de données. Cela peut être plus rapide et plus facilement accessible mais ce sera moins sécurisé et il peut y avoir des conflits d’écriture en cas de connexions simultanées.
Nous allons voir dans la suite de cette section les fonctions les plus couramment utilisées.
Pour commencer, il faut créer un fichier appelé « fichier.txt » dans le répertoire www, c’est-à-dire là où se trouvent vos pages PHP. Il faut absolument que ce fichier ait les droits en écriture pour pouvoir écrire dedans. Cela sera automatiquement le cas lorsque vous travaillez en local mais il faudra changer éventuellement les permissions du fichier si vous transférez votre fichier par FTP chez un hébergeur.
2. Lecture rapide
-
La fonction file_get_contents() permet de lire le contenu d’un fichier et de le retourner dans une chaîne de caractères.
Dans cet exemple, le fichier texte contient la phrase "Bonjour !".
<?php
$contenu = file_get_contents('fichier.txt');
echo $contenu;
?>
Affiche :
"Bonjour !" |
-
La fonction readfile() permet aussi de lire le contenu d’un fichier mais elle retourne le nombre de caractères du fichier et affiche automatiquement le contenu.
Dans cet exemple, le fichier texte contient la phrase : "Bonjour !"
<?php
$fichier = 'fichier.txt';
$nombre=readfile($fichier);
echo "<br /> Le nombre de caractères du fichier est : ".$nombre;
?>
Affiche :
"Bonjour !" |
Le nombre de caractères du fichier est : 11 |
-
La fonction file() permet de lire le contenu d’un fichier mais elle retourne le contenu dans un tableau ligne par ligne.
Dans cet exemple, le fichier texte contient la phrase "Bonjour !", un saut de ligne et la phrase "Monsieur Dupont.".
<?php
$tableau = file('fichier.txt');
foreach ($tableau as $ligne) {
echo $ligne."<br />";
}
?>
Affiche :
"Bonjour !" |
"Monsieur Dupont." |
En effet, chaque ligne du fichier se retrouve dans chaque...
Les includes
La fonction include() est très utile car elle permet d’appeler une autre page PHP dans une page PHP. Si vous marquez include(’fonctions.php’), cela revient à coller le code contenu dans la page fonctions.php à l’endroit où vous appelez la fonction include(). Cette fonction reçoit donc en paramètre le nom de la page PHP à inclure.
Par exemple, vous avez une page PHP appelée variable.php contenant le code suivant :
<?php
$nom = "DUPONT";
$prenom = "Robert";
?>
Dans votre page PHP courante, vous appelez l’include de cette façon :
<?php
include("variable.php");
echo $prenom." ".$nom;
?>
Affiche :
Robert DUPONT |
Si votre fichier variable.php se trouvait dans le répertoire inc, le code pour appeler cette page serait :
<?php
include("inc/variable.php");
echo $prenom." ".$nom;
?>
La page PHP peut être indiquée avec un chemin relatif ou absolu. Un chemin absolu est marqué en partant de la racine du disque dur (par exemple C:\wamp64) alors qu’un chemin relatif est marqué en partant de l’endroit où se situe votre fichier PHP. Vous verrez dans un prochain chapitre que le fichier php.ini contient une directive include_path contenant le chemin de recherche...
Exercices sur les fichiers
1. Énoncés
Exercice 1 (facile) : création d’un fichier compteur de page
Créer un fichier texte qui stocke le nombre de fois qu’une page a été vue.
Exercice 2 (moyen) : création d’un fichier de renseignement d’images
Placer trois images dans un répertoire images puis créer une page PHP qui crée un fichier texte contenant le nom et la taille de ces images puis qui copie ces images dans un répertoire archive au même niveau que le répertoire image.
Exercice 3 (difficile) : création d’un fichier log de traces
Créer une page qui écrit dans un fichier log.txt la date et l’heure courante et qui affiche le temps en microsecondes pour déplacer trois images du répertoire images au répertoire archive.
2. Corrigés
Solution de l’exercice 1
Créer un fichier compteur.txt puis exécuter le code suivant :
<?php
$ressource = fopen('compteur.txt', 'r+');
$nb_vues = fgets($ressource); // Lecture de la première ligne contenant
// le nombre de pages vues
if ($nb_vues == "") { //teste si le fichier ne contient pas encore de
//nombre
$nb_vues = 0;
}
$nb_vues++; // Augmentation de 1 du nombre de pages vues
fseek($ressource, 0); // le curseur est remis au début du fichier
fputs($ressource, $nb_vues); // Ecriture du nouveau nombre de pages vues
fclose($ressource);...