Le vendeur de jus
Si le client prend plus de 3 verres, il paie 8 DH le verre ; sinon 10 DH. Une condition, deux chemins : c'est un if / else.
if / elseif / else, les opérateurs de comparaison et logiques, switch et match, l'opérateur ??, puis les boucles while, do...while, for et foreach pour générer du HTML répétitif.
Le site doit choisir : afficher « En stock » ou « Rupture », appliquer ou non les frais de livraison, générer une ligne de tableau par produit. Ces décisions et ces répétitions s'écrivent avec les structures de contrôle, les mêmes qu'en algorithmique (module 02) avec la syntaxe de PHP.
Le tableau $stock associe chaque produit à sa quantité. La boucle foreach va le parcourir du début à la fin.
$stock = 3;
$ville = "Fès";
$montant = 620;
var_dump($stock === 0); // bool(false)
var_dump($montant >= 500 && $ville === "Fès"); // bool(true)
var_dump(!($stock > 5)); // bool(true)
if ($stock === 0) {
$etat = "Rupture";
} elseif ($stock < 5) {
$etat = "Stock faible";
} else {
$etat = "En stock";
}
Deux raccourcis très courants :
condition ? siVrai : siFaux pour choisir une valeur en une ligne ;?? : $page = $_GET['page'] ?? 1; prend la valeur si elle existe, sinon la valeur par défaut. Indispensable avec les formulaires.Dans un fichier qui mélange HTML et PHP, on utilise la syntaxe alternative, plus lisible :
<?php if ($stock === 0): ?>
<span class="rupture">Rupture</span>
<?php else: ?>
<span>En stock : <?= $stock ?></span>
<?php endif; ?>
// match : une valeur par cas
$frais = match ($ville) {
'Casablanca', 'Rabat' => 20,
'Fès', 'Meknès' => 30,
default => 35,
};
// switch : des instructions par cas
switch ($jour) {
case 'vendredi':
echo "Boutique ouverte l'après-midi seulement";
break;
case 'dimanche':
echo "Boutique fermée";
break;
default:
echo "Ouvert de 9 h à 19 h";
}
$epargne = 0;
$mois = 0;
while ($epargne < 2000) {
$epargne += 350;
$mois++;
}
echo "Objectif atteint en $mois mois"; // 6 mois
for ($i = 1; $i <= 3; $i++) {
echo "<option>$i</option>";
}
$villes = ["Fès", "Safi", "Agadir"];
foreach ($villes as $v) {
echo "<li>$v</li>";
}
$prix = ["Savon noir" => 30, "Ghassoul" => 40];
foreach ($prix as $nom => $p) {
echo "<li>$nom : $p DH</li>";
}
break sort de la boucle tout de suite ; continue passe directement au tour suivant.
Si le client prend plus de 3 verres, il paie 8 DH le verre ; sinon 10 DH. Une condition, deux chemins : c'est un if / else.
Le livreur tamponne chaque colis du camion, un par un, jusqu'au dernier : c'est un foreach sur la liste des colis.
foreach ($colis as $c) { echo "Colis $c tamponné<br>"; }
La page s'affichera ici.
Le navigateur demandera /catalogue.php au serveur, qui exécutera le PHP et renverra du HTML.
Consignes 0 / 3
Selon $moyenne, affichez : moins de 10 « Ajourné », de 10 à moins de 12 « Passable », de 12 à moins de 14 « Assez bien », de 14 à moins de 16 « Bien », sinon « Très bien ».
<?php $moyenne = 13.5; if ($moyenne < 10) { $mention = "Ajourné"; } elseif ($moyenne < 12) { $mention = "Passable"; } elseif ($moyenne < 14) { $mention = "Assez bien"; } elseif ($moyenne < 16) { $mention = "Bien"; } else { $mention = "Très bien"; } echo "Mention : $mention";
Générez avec une boucle for une liste <select> des quantités de 1 à 10 (une balise <option> par valeur).
<select name="quantite"> <?php for ($q = 1; $q <= 10; $q++): ?> <option value="<?= $q ?>"><?= $q ?></option> <?php endfor; ?> </select>
Avec match, traduisez $statut ('en attente', 'payée', 'livrée', 'annulée') en une couleur (orange, bleu, vert, rouge), et « gris » pour toute autre valeur.
<?php $couleur = match ($statut) { 'en attente' => 'orange', 'payée' => 'bleu', 'livrée' => 'vert', 'annulée' => 'rouge', default => 'gris', };