Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION À PHP
L'objectif de ce cours est de vous rendre capables de réaliser des sites web dynamiques entièrement par vous-
mêmes, pas à pas. En effet, ceux-ci peuvent proposer des fonctionnalités bien plus excitantes que les sites
statiques. Voici quelques éléments que vous serez en mesure de réaliser :
• un espace membres : vos visiteurs peuvent s'inscrire sur votre site et avoir accès à des sections qui leur sont
réservées ;
• un forum : il est courant aujourd'hui de voir les sites web proposer un forum de discussion pour s'entraider
ou simplement passer le temps ;
• un compteur de visiteurs : vous pouvez facilement compter le nombre de visiteurs qui se sont connectés
dans la journée sur votre site, ou même connaître le nombre de visiteurs en train d'y naviguer !
• des actualités : vous pouvez automatiser l'écriture d'actualités, en offrant à vos visiteurs la possibilité d'en
rédiger, de les commenter, etc. ;
• une newsletter : vous pouvez envoyer un e-mail à tous vos membres régulièrement pour leur présenter les
nouveautés et les inciter ainsi à revenir sur votre site.
Bien entendu, ce ne sont là que des exemples. Il est possible d'aller encore plus loin, tout dépend de vos
besoins. Sachez par exemple que la quasi-totalité des sites de jeux en ligne sont dynamiques.
Med HARRANE 1
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
La page web est générée à chaque fois qu'un client la réclame. C'est précisément ce qui rend les sites
dynamiques vivants : le contenu d'une même page peut changer d'un instant à l'autre.
C'est comme cela que certains sites parviennent à afficher par exemple votre pseudonyme sur toutes les
pages. Étant donné que le serveur génère une page à chaque fois qu'on lui en demande une, il peut la
personnaliser en fonction des goûts et des préférences du visiteur (et afficher, entre autres, son pseudonyme).
Med HARRANE 2
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Lorsqu'on connaît seulement HTML et CSS, on ne peut produire que des sites statiques… et non des sites
dynamiques ! Pour ces derniers, il est nécessaire de manipuler d'autres langages en plus de HTML et CSS.
• MySQL : c'est ce qu'on appelle un SGBD (Système de Gestion de Base de Données). Pour faire simple, son rôle
est d'enregistrer des données de manière organisée afin de vous aider à les retrouver facilement plus tard.
C'est grâce à MySQL que vous pourrez enregistrer la liste des membres de votre site, les messages postés
sur le forum, etc. Le langage qui permet de communiquer avec la base de données s'appelle le SQL. Voici un
code en langage SQL :
SELECT id, Nom, message, datemsg FROM livre ORDER BY datemsg DESC LIMIT 0, 10
PHP et MySQL sont des logiciels libres. Entre autres choses, cela donne des garanties de pérennité : tout le monde peut
contribuer à leur développement ! D'autre part, PHP et MySQL sont disponibles gratuitement.
PHP peut fonctionner seul et suffit à créer un site dynamique, mais les choses deviennent réellement
intéressantes lorsqu'on le combine à un SGBD tel que MySQL.
PHP est un langage de programmation utilisé sur de nombreux serveurs pour prendre des décisions. C'est
PHP qui décide du code HTML qui sera généré et envoyé au client à chaque fois.
Exemple : On peut écrire en PHP : « Si le visiteur est membre de mon site et s'appelle Alami, affiche
Bienvenue Alami sur la page web. En revanche, si ce n'est pas un membre de mon site, affiche Bienvenue à la
place et propose au visiteur de s’inscrire. »
C'est un exemple de site dynamique : selon que vous êtes un membre enregistré ou non, vous ne verrez pas
les mêmes choses et n'aurez peut-être pas accès à toutes les sections.
Med HARRANE 3
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
IV. ET LA CONCURRENCE ?
HTML et CSS n'ont pas de concurrents car ce sont des standards. Tout le monde est censé les connaître et les
utiliser sur tous les sites web.
En revanche, pour ce qui est des sites dynamiques, PHP et MySQL sont loin d'être les seuls sur le coup.
Med HARRANE 4
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Med HARRANE 5
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
<!DOCTYPE html>
<html>
<head>
<title>Ceci est une page de test</title>
<meta <?php /* Code PHP */ ?> charset="utf-8" />
</head>
Comment ça fonctionne ? À quoi ça peut servir ? Il faut se rappeler que PHP génère du code HTML.
3. AFFICHER DU TEXTE
L'instruction echo
Le PHP est un langage de programmation, ce qui n'était pas le cas du HTML (on parle plutôt de langage de
description, car il permet de décrire une page web).
L’instruction qui permet d'insérer du texte dans la page web est echo.
Voici un exemple d'utilisation de cette instruction :
<?php echo "Ceci est du texte"; ?>
Notez qu'il existe une instruction identique à echo appelée print , qui fait la même chose. Cependant,
echo est plus couramment utilisée.
Il faut savoir qu'on a aussi le droit de demander d'afficher des balises. Par exemple, le code suivant
fonctionne :
<?php echo "Ceci est du <strong>texte</strong>"; ?>
Le mot « texte » sera affiché en gras grâce à la présence des balises <strong> et </strong> .
Au autre Exemple :
<!DOCTYPE html>
<html>
<head>
<title>Notre première instruction : echo</title>
<meta charset="utf-8" />
</head>
<body>
<h2>Affichage de texte avec PHP</h2>
<p>
Cette ligne a été écrite entièrement en HTML.<br />
<?php echo "Celle-ci a été écrite entièrement en PHP."; ?>
</p>
</body>
</html>
Med HARRANE 6
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
8. LES COMMENTAIRES
Un commentaire est un texte que vous mettez pour vous dans le code PHP. Ce texte est ignoré, c'est-à-dire
qu'il disparaît complètement lors de la génération de la page. Il n'y a que vous qui voyez ce texte.
Il existe deux types de commentaires :
• les commentaires monolignes ;
o // Tapez ensuite votre commentaire.
• les commentaires multilignes.
o Il faut commencer par écrire /* puis refermer par */
2. LE PROBLÈME
Jusqu'ici, vous étiez condamnés à copier sur chaque page à l'identique :
• l'en-tête ;
• le menu ;
• le pied de page.
Cela donnait du code lourd et répétitif sur toutes les pages !
Regardez le code d'exemple ci-dessous qui représente une page web (appelons-la index.php) avec en-tête,
menu et pied de page :
<html>
<head> <title> Mon super site</title> </head>
<body>
<!-- L'en-tête -->
<header> </header>
<!-- Le menu -->
<nav id="menu">
<div class="element_menu">
<h3>Titre menu</h3>
<ul>
<li><a href="page1.html">Lien</a></li>
<li><a href="page2.html">Lien</a></li>
<li><a href="page3.html">Lien</a></li>
</ul>
</div>
</nav>
<!-- Le corps -->
Med HARRANE 7
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
<div id="corps">
<h1>Mon super site</h1>
<p>
Bienvenue sur mon super site !<br />
Vous allez adorer ici, c'est un site génial qui va parler de votre filière.
</p>
</div>
<!-- Le pied de page -->
<footer id="pied_de_page">
<p>Copyright DSI, tous droits réservés</p>
</footer>
</body>
</html>
D'une page à l'autre, ce site contiendra à chaque fois le même code pour l'en-tête, le menu et le pied de page
! En effet, seul le contenu du corps change en temps normal.
3. LA SOLUTION
En PHP, nous pouvons facilement insérer d'autres pages à l'intérieur d'une page.
En PHP, vous pouvez inclure le menu sur vos pages. Lorsque vous voudrez modifier le menu, vous n'aurez
qu'à modifier menu.php et l'ensemble des pages de votre site web sera automatiquement mis à jour !
4. LA PRATIQUE
Le fichier menu.php doit comporter les lignes suivantes :
<nav id="menu">
<div class="element_menu">
<h3>Titre menu</h3>
<ul>
<li><a href="page1.html">Lien</a></li>
<li><a href="page2.html">Lien</a></li>
<li><a href="page3.html">Lien</a></li>
</ul>
</div>
</nav>
Faites de même pour une page entete.php et une page pied_page.php en fonction des besoins de votre
site.
Une page dont l'extension est .php peut très bien ne contenir aucune balise PHP (même si c'est plutôt rare).
Dans ce cas, cela redevient une page HTML classique qui n'est pas modifiée avant l'envoi.
Maintenant que les parties de pages sont prêtes, reprenez les pages de votre site, par exemple la page
d'accueil nommée index.php. Remplacez le menu par le code PHP suivant :
<html>
<head> <title> Mon super site </title> </head>
<body>
<?php include("entete.php"); ?>
<?php include("menu.php"); ?>
<!-- Le corps -->
<div id="corps">
<h1>Mon super site</h1>
<p>
Bienvenue sur mon super site !<br />
Vous allez adorer ici, c'est un site génial qui va parler de votre filière.
</p>
</div>
<!-- Le pied de page -->
<?php include("pied_page.php"); ?>
</body>
</html>
Ce code suppose que votre page index.php et celles qui sont incluses (comme menu.php) sont dans le même
dossier. Si le menu était dans un sous-dossier appelé includes, il aurait fallu écrire :
Med HARRANE 8
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
C'est le même principe que pour les liens relatifs, que vous connaissez déjà dans le langage HTML.
Le schéma suivant vous aidera à comprendre comment les pages sont incluses.
En résumé
• Une page PHP peut inclure une autre page (ou une partie de page) grâce à l'instruction include.
• L'instruction include sera remplacée par le contenu de la page demandée.
• Cette technique, très simple à mettre en place, permet par exemple de placer les menus de son site dans un
fichier menu.php que l'on inclura dans toutes les pages. Cela permet de centraliser le code des menus alors
qu'on était auparavant obligé de le copier dans chaque page sur nos sites statiques en HTML et CSS !
Med HARRANE 9
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
• Les nombres décimaux (float) : ce sont les nombres à virgule, comme 14,738. On peut stocker de nombreux
chiffres après la virgule, ce qui devrait convenir pour la plupart des usages que vous en ferez. Attention, les
nombres doivent être écrits avec un point au lieu de la virgule (c'est la notation anglaise). Exemple : 14.738.
• Les booléens (bool) : c'est un type très important qui permet de stocker soit vrai (true) soit faux (false).
• Rien (NULL) : on a parfois besoin de dire qu'une variable ne contient rien. On indique donc qu'elle vaut
NULL. Ce n'est pas vraiment un type de données, mais plutôt l'absence de type.
Med HARRANE 10
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Le type bool(booléen)
<?php
$mariee = true;
$ celibataire = false;
?>
Med HARRANE 11
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
<?php
$nombre = 10;
$resultat = ($nombre + 5) * $nombre; // $resultat prend la valeur 150
?>
Le modulo
Il est possible de calculer le reste de la division entière avec modulo. Pour faire un calcul avec un modulo, on
utilise le symbole %.
<?php
$nombre = 10 % 5; // $nombre prend la valeur 0 car la division tombe juste
$nombre = 10 % 3; // $nombre prend la valeur 1 car il reste 1
?>
<?php
$age = 8;
if ($age <= 12) { // SI l'âge est inférieur ou égal à 12
echo "Salut mon enfant ! Bienvenue sur mon site !<br />";
$autorisation_entrer = "Oui";
}
else { // SINON
echo "Ceci est un site pour enfants, vous êtes vieux pour pouvoir entrer. Au revoir !<br />";
$autorisation_entrer = "Non";
}
echo "Avez-vous l'autorisation d'entrer ? La réponse est : $autorisation_entrer";
?>
Med HARRANE 12
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
<?php
if ($autorisation_entrer == "Oui") { // SI on a l'autorisation d'entrer
// instructions à exécuter quand on est autorisé à entrer
}
elseif ($autorisation_entrer == "Non") { // SINON SI on n'a pas l'autorisation d'entrer
// instructions à exécuter quand on n'est pas autorisé à entrer
}
else { // SINON (la variable ne contient ni Oui ni Non, on ne peut pas agir)
echo " je ne connais pas ton âge, tu peux me le rappeler s'il te plaît ?";
}
?>
La principale nouveauté ici, c'est le mot-clé elseif qui signifie « sinon si ». Dans l'ordre, PHP rencontre les
conditions suivantes :
1) si $autorisation_entrer est égale à « Oui », tu exécutes ces instructions…
2) sinon si $autorisation_entrer est égale à « Non », tu exécutes ces autres instructions…
3) sinon, tu redemandes l'âge pour savoir si on a ou non l'autorisation d'entrer.
Au fait, au départ, une variable ne contient rien. Sa valeur est vide, on dit qu'elle vaut NULL. Pour vérifier si la
variable est vide, vous pouvez taper : if ($variable == NULL)…
}
?>
<?php
if ($age <= 12 AND $langue == "français") {
echo "Bienvenue sur mon site !";
}
elseif ($age <= 12 AND $langue == "anglais") {
echo "Welcome to my website!";
}
?>
Med HARRANE 13
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Exemple avec OR :
<?php
if ($sexe == "fille" OR $sexe == "garçon") {
echo "Salut Terrien !";
}
else {
echo "si t'es ni une fille ni un garçon, t'es quoi alors ?";
}
?>
L'astuce bonus
Avec les conditions, il y a une astuce à connaître. Sachez que les deux codes ci-dessous donnent exactement le
même résultat :
<?php
if ($variable == 23) {
echo '<strong>Bravo !</strong> Vous avez trouvé le nombre mystère !';
}
?>
<?php
if ($variable == 23) {
?>
<strong>Bravo !</strong> Vous avez trouvé le nombre mystère !
<?php
}
?>
Comme vous le voyez, dans la seconde colonne on n'a pas utilisé de echo. En effet, il suffit d'ouvrir l'accolade
({), puis de fermer la balise PHP (?>), et vous pouvez mettre tout le texte à afficher que vous voulez en HTML !
Rudement pratique quand il y a de grosses quantités de texte à afficher, et aussi pour éviter d'avoir à se prendre la
tête avec les antislashs devant les guillemets (" ou '). Il faudra toutefois penser à refermer l'accolade après (à
l'intérieur d'une balise PHP, bien entendu).
C’est lourd, long, et répétitif. Dans ce cas, on peut utiliser une autre structure plus souple : c'est switch.
<?php
$note = 10;
switch ($note) { // on indique sur quelle variable on travaille
Med HARRANE 14
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
V. LES BOUCLES
Dans la série des éléments de base de PHP à connaître absolument, voici les boucles ! Répéter des instructions,
ça, l'ordinateur sait faire (et en plus, il ne bronche jamais) !
Med HARRANE 15
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
while peut se traduire par « tant que ». Ici, on demande à PHP : TANT QUE $continuer_boucle est vrai,
exécuter ces instructions.
Les instructions qui sont répétées en boucle se trouvent entre les accolades { et }.
<?php
$nombre_de_lignes = 1;
while ($nombre_de_lignes <= 100)
{
echo 'Je ne dois pas regarder les mouches voler quand j\'apprends le PHP.<br />';
$nombre_de_lignes++; // $nombre_de_lignes = $nombre_de_lignes + 1
}
?>
PHP refuse normalement de travailler plus d'une quinzaine de secondes. Il s'arrêtera tout seul s'il voit que son
travail dure trop longtemps et affichera un message d'erreur.
Cet exemple devrait montrer que la valeur de la variable augmente à chaque passage dans la boucle :
<?php
$nombre_de_lignes = 1;
while ($nombre_de_lignes <= 100) {
echo 'Ceci est la ligne n°' . $nombre_de_lignes . '<br />';
$nombre_de_lignes++;
}
?>
Après le mot for, il y a des parenthèses qui contiennent trois éléments, séparés par des points-virgules ;.
Décrivons chacun de ces éléments.
• Le premier sert à l'initialisation. C'est la valeur que l'on donne au départ à la variable (ici, elle vaut 1).
• Le second, c'est la condition. Comme pour le while, tant que la condition est remplie, la boucle est
réexécutée. Dès que la condition ne l'est plus, on en sort.
• Enfin, le troisième c'est l'incrémentation, qui vous permet d'ajouter 1 à la variable à chaque tour de boucle.
Les deux derniers codes donnent donc exactement le même résultat. Le for fait la même chose que le while,
mais rassemble sur une seule ligne tout ce qu'il faut savoir sur le fonctionnement de la boucle.
Comment savoir lequel prendre quand je dois choisir entre un while et un for ?
La boucle while est plus simple et plus flexible : on peut faire tous les types de boucles avec mais on peut
oublier de faire certaines étapes comme l'incrémentation de la variable. En revanche, for est bien adapté quand on
doit compter le nombre de fois que l'on répète les instructions et il permet de ne pas oublier de faire l'incrémentation
pour augmenter la valeur de la variable !
Si vous hésitez entre les deux, il suffit simplement de vous poser la question suivante : « Est-ce que je sais
d'avance combien de fois je veux que mes instructions soient répétées ? ». Si la réponse est oui, alors la boucle
for est tout indiquée. Sinon, alors il vaut mieux utiliser la boucle while.
Med HARRANE 16
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
✓ str_replace : rechercher et remplacer une chaîne de caractères par une autre. Exemple :
<?php
$ma_variable = str_replace('dev', 'développement', 'dev Web');
echo $ma_variable;
?>
On a besoin d'indiquer trois paramètres :
- la chaîne qu'on recherche (ici, « dev » ) ;
- la chaîne qu'on veut mettre à la place (ici, on met « développement » à la place des « dev ») ;
- la chaîne dans laquelle on doit faire la recherche.
Med HARRANE 17
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
À noter qu'il existe strtoupper qui fait la même chose en sens inverse : minuscules → majuscules.
6. RÉCUPÉRER LA DATE
Cette fonction peut donner beaucoup d'informations. Voici les principaux paramètres à connaître :
Paramètre Description
H Heure
i Minute
d Jour
m Mois
Y Année
Attention ! Respectez-les majuscules/minuscules, c'est important ! Si vous voulez afficher l'année, il faut donc
envoyer le paramètre Y à la fonction :
<?php
$annee = date('Y');
echo $annee;
?>
<?php
function DireBonjour($nom) {
echo 'Bonjour ' . $nom . ' !<br ></code>';
}
Med HARRANE 18
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
DireBonjour('Khaoula');
DireBonjour(Marouane);
DireBonjour('RIM');
?>
$prenoms est un array : c'est ce qu'on appelle une variable « tableau ». Elle n'a pas qu'une valeur, mais
plusieurs. Dans un array, les valeurs sont rangées dans des « cases » différentes. Ici, on parle d’un array numéroté,
c'est-à-dire que chaque case est identifiée par un numéro. Ce numéro est appelé clé.
Attention ! Un array numéroté commence toujours à la case n°0 !
Med HARRANE 19
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Med HARRANE 20
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
4. PARCOURIR UN TABLEAU
Lorsqu'un tableau a été créé, on a souvent besoin de le parcourir pour savoir ce qu'il contient. Il y a plusieurs
moyens d'explorer un array :
- la boucle for ;
- la boucle foreach ;
- la fonction print_r (utilisée principalement pour le débogage).
La boucle for
Il est très simple de parcourir un tableau numéroté avec une boucle for. En effet, puisqu'il est numéroté à
partir de 0, on peut faire une boucle for qui incrémente un compteur à partir de 0 :
<?php
// On crée notre array $prenoms
$prenoms = array ('Marouane', 'Rim', 'Khaoula', 'Fatiha', 'Mohamed');
// Puis on fait une boucle pour tout afficher :
for ($numero = 0; $numero < 5; $numero++) {
echo $prenoms[$numero] . '<br />'; // affichera $prenoms[0], $prenoms[1] etc.
}
?>
La boucle foreach
Foreach est une sorte de boucle for spécialisée dans les tableaux. La fonction passe en revue chaque ligne
du tableau, et lors de chaque passage, elle met la valeur de cette ligne dans une variable temporaire.
<?php
$prenoms = array ('Marouane', 'Rim', 'Khaoula', 'Fatiha', 'Mohamed');
foreach($prenoms as $element) {
echo $element . '<br />'; // affichera $prenoms[0], $prenoms[1] etc.
}
?>
Med HARRANE 21
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Med HARRANE 22
LYCÉE TECHNIQUE Programmation
CENTRE BTS - FÈS - Web
Med HARRANE 23