Académique Documents
Professionnel Documents
Culture Documents
EVOLUE – PHP
2ème Année BTS Informatique Développeur d’Application
Note : Ce support est un supplément pour le cours de PHP au programme de 2ème année du BTS option
Informatique Développeur d’Application. Il ne peut par conséquent se substituer au cours donné par
l’enseignant en classe.
SYSG TRAINING
Support de cours Module Langage de programmation PHP 2 è me Année BTS Informatique Développeur d’Application
Introduction à PHP
S1 2H
Chap I : Un environnement de travail : WAMP
S5 2H
Chap VII : Les formulaires
S6 3H
S9
TP : Mini-Projet 6H
S10
$nomtableau[n]=valeur ;
où n est un indice entier quelconque, et valeur un scalaire ou une variable de type integer,
double, boolean, string ou array.
Ou encore utiliser la fonction array() avec la syntaxe suivante :
$nomtableau = array(valeur0,valeur1,…,valeurN) ;
Permet de définir un tableau indicé de N+1 éléments avec le premier indice égale à 0 et le
dernier égale à N.
Exemple :
Créer un tableau contenant entiers suivants : 20, 14, 17, 52, 87
$tab=array(20, 14, 17, 52, 87) ;
Ou
$tab [0]=20 ;
$tab [1]=14 ;
$tab [2]=17 ;
$tab [3]=52 ;
$tab [4]=87 ;
Ou
<?php
$tabetudiant["matricule"]="A0041C" ;
$tabetudiant["nom"] ="KOUAME";
$tabetudiant["prenoms"]="Amenan Chantal";
$tabetudiant["Classe"]="BTS IDA2";
$tabetudiant["Moyan"]=12.80;
Une fonction est un bloc de code qui n’est pas exécuté que lors de l’appel explicite de la
fonction dans un script. Écrit une seule fois, ce code peut être exécuté autant de fois que
nécessaire. Allégeant ainsi l’ensemble du code.
PHP propose une multitude de fonctions natives écrites en langage C ainsi que plusieurs
modules d’extension.
Avant d’utiliser un module d’extension, il convient de vérifier qu’il est bien installé sur le
serveur de l’hébergeur.
- La fonction max() : elle retourne la plus grande valeur numérique parmi les valeurs
passées en paramètres.
Si le premier paramètre est un tableau, max() retourne la plus grande valeur de ce tableau.
Si le premier paramètre est un entier, une chaîne ou un nombre à virgule flottante, max()
requiert au moins deux paramètres et retourne alors le plus grand d’entre eux. Le nombre
d’arguments est alors illimité.
Si au moins une valeur est un nombre à virgule flottante, elles seront toutes traitées comme
des nombres à virgule flottante.
Exemple :
<?php
echo max(1, 3, 5, 6, 7); // 7
echo max(array(2, 4, 5)); // 5
?>
La fonction min() est l’opposée de max(). Elle retourne la valeur la plus petite. Le
fonctionnement est en tout point identique à max().
Exemple :
<?php
echo round(3.4); // Affiche 3
echo round(3.5); // Affiche 4
echo round(3.6); // Affiche 4
echo round(3.6, 0); // Affiche 4
echo round(1.95583, 2); // Affiche 1.96
echo round(1241757, -3); // Affiche 1242000
?>
Arrondi supérieur
ceil (nombre )
La fonction ceil() retourne l’entier supérieur du nombre passé en paramètre. Utiliser
ceil() sur un entier ne sert à rien.
<?php
echo ceil(7.2); // 8
echo ceil(99.999); // 100
?>
Arrondi inférieur
floor(nombre )
La fonction floor() retourne l’entier inférieur du nombre passé en paramètre.
<?php
echo floor(7.2); // 7
echo floor(99.999); // 99
?>
mt_rand([minimum,maximum])
Pour obtenir un nombre entier entre 5 et 15 inclus, il faut utiliser mt_rand(5,15).
Exemple :
<?php
$salaire = mt_rand(1,1000000) ;
if ($salaire < 60000) {
echo "Vous êtes payé $salaire _, c’est en dessous du SMIG";
} elseif ($salaire < 3000) {
echo "Avec $salaire _, vous êtes raisonnablement bien payé";
} else {
echo "$salaire _ ! Contactez-moi, votre travail m’intéresse !";
}
?>
Plusieurs autres fonctions peuvent être utilisées. Parmi celles-ci, il y a :
- Pow($x,$y) : x exposant y
M. GOGBE Benjamin – Professeur d’Algorithmique et programmation 6
Support de cours Module Langage de programmation PHP 2 è me Année BTS Informatique Développeur d’Application
La fonction date() retourne une date sous forme d’une chaîne, au format donné par le
premier paramètre. La date est fournie par le second paramètre sous la forme d’un times-
tamp Unix. Si le second paramètre n’est pas renseigné, la date courante est utilisée.
Le format utilisé en premier paramètre permet de définir ce qui sera retourné par la
fonction.
Par exemple, la chaîne Y-m-d permet d’afficher la date sous la forme 2004-01-31.
Une description des différents caractères significatifs spécifiables dans le format est donnée
au tableau 7-2.
Exemple :
<?php
$format = 'd-m-y, H:i:s' ;
$date = date($format) ;
echo $date ;
// Affiche une date sous la forme : 31-04-04, 23:59:59
?>
Timestamp Unix
Le timestamp est l’unité couramment utilisée pour les dates sur les systèmes Unix. Il s’agit d’un
décompte des secondes écoulées depuis 1970 (il est toutefois possible sur la plupart des systèmes
d’accéder aux dates entre 1901 et 1970 en utilisant un entier signé négatif pour le nombre de secondes).
Ce format a deux avantages : il utilise un simple nombre entier pour être stocké et facilite les
manipulations de dates (on peut directement ajouter ou soustraire des dates et des périodes, toutes
exprimées en secondes).
Sur les systèmes 32 bits, ce format présente le désavantage d’être limité à l’année 2038 (à cette date,
le nombre de secondes écoulées dépassera la taille d’un entier 32 bits). Le pari fait est qu’à cette date,
la plupart des systèmes seront en 64 bits, donc que la limite de 2038 sera reculée à une date quasi
inatteignable.
La fonction checkdate() renvoie TRUE si la date représentée par le jour, le mois et l’année
donnés en paramètres est valide, FALSE sinon. Les années bissextiles sont prises en compte.
<?php
// On récupère la date d’anniversaire fournie
// sous la forme JJ/MM/AAAA
$anniversaire = $_REQUEST['anniversaire'];
$tab = explode("/",$anniversaire);
// On vérifie que cette date est valide
if (checkdate($tab[1],$tab[0],$tab[2])){
echo 'La date est valide.';
}else{
echo 'La date est invalide.';
}
?>
La fonction getdate()
Par exemple :
<?php
$aujourdhui = getdate();
$mois = $aujourdhui['month'];
$jour = $aujourdhui['mday'];
$annee = $aujourdhui['year'];
echo "$jour/$mois/$annee";
?>
Toute application produisant des flux de données confidentielles implique une sécurisation
de ceux-ci pour éviter qu’un tiers puisse les consulter. La solution optimale est de chiffrer les
données à sécuriser empêchant ainsi leur utilisation en cas d’interception.
Quelques définitions
Sous le terme de chiffrement, nous distinguerons en fait deux termes plus précis et plus
corrects : hachage et codage (et décodage).
Le procédé de hachage est une opération à sens unique qui permet d’obtenir une chaîne non
prédictible et qui semble aléatoire à partir d’un texte ou d’une donnée. La chaîne résultante
est généralement assez courte. Comme il s’agit d’une opération à sens unique, personne ne
pourra décoder la chaîne résultante et revenir à la donnée d’origine, pas même vous qui avez
fait la première conversion.
La fonction md5
Il est impossible de construire volontairement une donnée qui donne un MD5 spécifié.
Cette fonction est utilisée pour gérer les mots de passe système.
Le résultat est une chaîne hexadécimale (donc facilement manipulable et affichable) de
32 caractères.
Exemple:
<?php
$donnee = 'secretXzB';
$md5 = md5( $donnee );
echo $md5 ;
?>
La fonction sha1
Le SHA1 est similaire au MD5 mais renvoie une chaîne légèrement plus longue (40 caractères
hexadécimaux, ou 20 octets).
Les procédés de codage et décodage permettent, eux, d’avoir une opération à double sens.
Une fois la chaîne transformée, il est possible de revenir à la donnée d’origine, que ce soit avec
un mot de passe ou grâce à un système plus complexe.
Les fonctions de codage et décodage se séparent elles-mêmes en deux groupes : les codages
à clé publique et les codages à clé privée.
Les premiers désignent les codages qui emploient la même clé (ou le même mot de passe)
pour coder et décoder la donnée. Les autres permettent d’avoir un mot-clé pour coder et un
pour décoder. Généralement, on en réserve un pour soi et on diffuse l’autre.
1) Déclaration de fonction
Elle peut se faire n’importe où dans le code. Elle se fait avec le mot-clé function.
Une fonction en PHP peut renvoyer une valeur au programme appelant. Dans ce cas, l’instruction
return à l’intérieur de la fonction (généralement la dernière instruction) est utilisée.
return valeur_a_renvoyer
Remarques :
Le nom de la fonction suit les mêmes règles que les noms de variables :
- le nom doit commencer par une lettre.
- un nom de fonction peut comporter des lettres, des chiffres et les caractères _ et &. Les
espaces ne sont pas autorisés.
- le nom de la fonction, comme celui des variables est sensible à la casse (différence entre les
minuscules et majuscules).
Les arguments sont facultatifs mais s'il n'y a pas d'arguments, les parenthèses doivent rester
présentes.
Il ne faut pas oublier de refermer les accolades.
2) Appel de fonction
Pour utiliser une fonction, il faut l’appeler. Elle se fait en utilisant le nom de la fonction (suivi
de la liste exhaustive de ses arguments dans l’ordre, en les séparant par des virgules) si elle
en possède.
Exemple :
Ecrire une fonction qui fait la somme de 2 entiers.
On peut définir une valeur par défaut d’un argument. Dans ce cas, on utilise le nom de
l’argument suivi du symbole = et de la valeur par défaut.
Ainsi, lorsque l’utilisateur ne définit pas de valeur pour cet argument pendant l’appel de
la fonction, la valeur par défaut sera utilisée.
NB : Tous les arguments sauf le premier.
Exemple
Ecrire une fonction qui donne un message de salutation suivi d’un nom.
Par exemple "Bonjour GOGBE".
Par défaut, le programme dira Bonjour sauf si un autre message de salutation lui est précisé.
I. L’instruction if
Présente dans tous les langages de programmation, elle permet d’orienter l’exécution du
script en fonction de la valeur booléenne d’une expression.
Syntaxe :
if (expression) instruction;
expression est une valeur booléenne. Si l’expression incluse dans les parenthèses est évaluée
à la valeur booléenne TRUE, l’instruction qui suit est exécutée. Dans le cas contraire,
l’exécution passe directement à la ligne suivante.
L’instruction if peut être suivie d’un bloc d’instructions délimité par des accolades qui sera
entièrement exécuté dans les mêmes conditions :
Syntaxe :
if(expression)
{
//bloc d’instructions
}
NB :
Ne vous trompez pas d’opérateur
Une erreur courante consiste à confondre l’opérateur de comparaison == avec
l’opérateur d’affectation =. Dans les expressions conditionnelles, pour tester l’égalité de
deux valeurs il faut employer l’opérateur == ou encore === pour tester l’identité (même
valeur et même type).
Les accolades
Dans le cas d’une seule instruction, les accolades peuvent être omises, mais cela est
déconseillé (comme l’indiquent les règles de codage)
Doc PHP 5 La Bible Micro Application
<?php
$prixtotal=25000;
if($prixtotal >25000)
{
echo "<b>Pour un montant d'achat de", $prix, " F la remise est de 10 % </b><br />";
echo "Le prix net est de ", $prix*0.90;
}
else
{
echo "<b>Pour un montant d'achat de $prix F, la remise est de 5 %</b><br/>";
echo "<h3>Le prix net est de ", $prix*0.95,"</h3>";
}
?>
Le bloc qui suit les instructions if ou else peut contenir toutes sortes d’instructions, y compris
d’autres instructions if...else. Nous obtenons dans ce cas une syntaxe plus complexe, de la
forme :
if(expression1)
{
//Bloc 1
}
elseif(expression2)
{
//Bloc 2
}
else
{
//Bloc 3
}
<?php
// ********************if...elseif...else************** **
$cat="MINI-CHAINE";
$prix=150000;
if($cat=="MINI-CHAINE")
{
if($prix >= 200000)
←
{
echo "<b>Pour l'achat d'une mini-chaîne d'un montant de", $prix, "F la remise est de
15 %</b><br />";
echo "<h3> Le prix net est de : ",$prix*0.85, "F </h3>";
}
}
elseif($cat=="Cartes mémoires") ←
{
echo "<b>Pour l'achat de cartes mémoires la remise est de 5 %</ b><br />";
echo "<h4> Le prix net est de : ",$prix*0.95, "F</h4>";
}
else
{
echo"<b>Pour les autres achats la remise est de 3 %</ b><br />";
echo "<h4> Le prix net est de : ",$prix*0.97, "F </h4>";
}
?>
III- L’opérateur ?
L’opérateur ? permet de remplacer avantageusement une instruction if...else en évaluant
une expression et en attribuant à une variable une première valeur si la condition est vraie
ou une autre valeur si elle est fausse.
Syntaxe :
$var = expression ? valeur1 : valeur2
Cet opérateur est généralement employé avec des expressions booléennes courtes.
Exemple :
<?php
$ch = "Bonjour ";
$sexe="M";
$ch .= ($sexe=="F")?"Madame":"Monsieur";
echo "<h2>$ch</h2>";
?>
Cette instruction est utilisée pour remplacer des tests if consécutifs sur une même variable.
Elle permet de comparer la valeur d’une expression avec une liste de valeurs prédéterminées
par le programmeur et d’orienter le script en fonction de la valeur de cette expression.
Syntaxe :
switch(expression)
{
case valeur1:
//bloc d'instructions 1;
break;
case valeur2:
//bloc d'instructions 2;
break;
........................
case valeurN:
//bloc d'instructions N;
break;
default:
//bloc d'instructions par défaut;
break;
}
Remarques :
default est la condition qui sera VRAIE si aucune des autres ne l’est. Elle permet,
généralement, de gérer des cas d’erreurs de saisie par exemple.
L’instruction break permet de sortir directement de la structure sans exécuter les
autres blocs qui suivent.
La valeur qui suit chaque instruction case peut être une constante littérale ou une
constante nommée déclarée avec le mot-clé define.
Exemple 1 :
On se propose d’écrire un script qui affiche l’horoscope en fonction du signe zodiaque.
Voici les différents horoscopes :
- Lion : Vous êtes un fonceur dans la vie.
- Taureau : Rien ne vous échappe.
- Scorpion : Vous serez souvent trahi malgré votre bonne foi
- Verseau : Les métiers de l’air vous sont favorables
- Cancer : Vous serez heureux
- Balance : vous aimez la justice
- Capricorne : Vous êtes chanceux
- Vierge : La gentillesse est votre défaut
- Gémeaux : vous adorez les amis
- Poissons : Vous aimez les voyages
- Sagittaire : Vous rencontrerez l’amour
- xxxx : Votre force est atout majeur
<?php
function horoscope($signe){
switch($signe){
case "Lion": return "Vous êtes un fonceur dans la vie";
break;
case "Balance": return "Vous aimez la justice";
break;
case "Capricorne": return "Vous êtes chanceux";
break;
case "Sagittaire": return "Vous rencontrerez l’amour";
break;
case "Taureau": return "Votre force est atout majeur";
break;
case "Gemeaux": return "Vous adorez les amis";
break;
case "Poissons ": return "Vous aimez les voyages";
break;
case "Cancer ": return "Vous serez heureux";
break;
case "Verseau": return "Les métiers de l’air vous sont favorables";
break;
case "Scorpion": return "Vous serez souvent trahi malgré votre bonne foi";
break;
case "Vierge": return "La gentillesse est votre défaut";
break;
case "xxxx ": return "Votre force est atout majeur";
break;
?>
Exemple 2 :
On se propose d’écrire une fonction PHP qui renvoie le jour en français à partir de la date du
jour.
Utiliser la fonction getdate() et le paramètre « weekday » pour obtenir le jour de la semaine
en anglais.
Votre fonction devrait se présenter comme ci-dessous :
<?php
function joursemaine(){
$datejour=getdate();
$jour=$datejour["weekday"];
switch($jour){
case "Monday": return "Lundi";
break;
case "Tuesday": return "Mardi";
break;
M. GOGBE Benjamin – Professeur d’Algorithmique et programmation 16
Support de cours Module Langage de programmation PHP 2 è me Année BTS Informatique Développeur d’Application
Exercice pratique :
Dans le même ordre d’idée que l’exercice précédent, écrire une fonction qui renvoie le mois
en français de la date du jour.
Les boucles permettent de répéter plusieurs fois les mêmes instructions. Selon la structure de
boucle utilisée, le nombre d’itérations peut être déterminé d’avance ou être défini par une
condition particulière.
I- La boucle for
La boucle for permet d’exécuter un certain nombre de fois la même instruction ou le même
bloc d’instructions.
Sa syntaxe est la suivante :
for(expression1; expression2; expression3)
{
//instruction ou bloc;
}
expression1 est exécutée avant toute itération et sert généralement à initialiser les variables
servant de compteur à la boucle.
expression2 est exécutée à chaque itération. Si elle est VRAIE, une nouvelle exécution des
instructions a lieu, sinon le programme sort de la boucle.
expression3 est une instruction exécutée à chaque itération. Elle sert généralement à
incrémenter une variable.
Exemple :
On se propose d’écrire un script qui affiche les chiffres de 0 à 9:
for ($i=0;$i<10;$i++) {
echo $i;
}
Pour lire les valeurs et les clés (ou les indices), la deuxième syntaxe est la
suivante :
foreach($tableau as $cle=>$valeur)
{
//bloc utilisant la valeur et la clé de l'élément courant
}
Exemple :
<?php
//Lecture des valeurs et des clés
$tab=array("Jean","Henri","Mory","Hubert");
foreach($tab as $cle=>$valeur){
echo "Nom ",$cle," : ",$valeur," <br/>";
}
?>
La syntaxe :
do {
instruction1;
instruction2;
} while (expression);
L’instruction break
Elle permet d’arrêter l’exécution de la boucle en cours sans arrêter tout le script.
L’instruction continue
Contrairement à l’instruction break, l’instruction continue n’arrête pas la boucle en cours
mais l’itération en cours. Ainsi, toutes les instructions qui suivent le mot-clé continue ne sont
pas exécutées lors de l’itération en cours.
Exemple 1 :
Soit un tableau contenant 10 nombres entiers quelconques. On veut écrire un script qui
permet d’afficher les nombres >=20.
Solution:
<?php
$tab=array(5,20,41,10,14,2,6,42,23,17);
for($i=0;$i<count($tab); $i++)
{
if($tab[$i]<20){continue;}
echo "Valeur $i : ",$tab[$i]," <br />";
}
?>
Exemple 2 :
Ecrire un script qui permet d’afficher les 3 premiers nombres d’un tableau de 10 entiers.
Solution :
<?php
$tab=array(5,20,41,10,14,2,6,42,23,17);
for($i=0;$i<count($tab); $i++)
{
if($i==3){break;}
echo "Valeur $i : ",$tab[$i]," <br />";
}
?>