PHP Exercices

Complétez les codes PHP ci-dessous pour maîtriser les concepts essentiels. Chaque exercice peut être copié et adapté selon vos besoins.

Variables et Affichage

Maîtrisez les bases : variables, types de données et affichage.

DÉBUTANT

Objectif : Créer une variable nom et l'afficher avec echo

Exercice 1 - Première Variable

<?php
// Créer une variable $nom avec votre prénom
$nom =;

// Afficher "Bonjour" suivi du nom
"Bonjour " . $nom;
?>

2 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

En PHP, les chaînes de caractères sont entourées de guillemets. Pour afficher, utilisez <code>echo</code>.

php

$nom = "Jean";
echo "Bonjour " . $nom;

INTERMÉDIAIRE

Objectif : Calculer l'âge et afficher un message selon la catégorie

Exercice 2 - Calculs et Conditions

<?php
$annee_naissance =;
$annee_actuelle =;
$age =;

if ($age <) {
    echo;
} elseif ($age <) {
    echo;
} else {
    echo;
}
?>

8 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Utilisez <code>date('Y')</code> pour l'année actuelle. L'âge = année actuelle - année de naissance.

php

$annee_actuelle = date('Y');
$age = $annee_actuelle - $annee_naissance;

Boucles et Répétitions

Automatisez vos tâches avec les boucles for, while et foreach.

DÉBUTANT

Objectif : Créer une table de multiplication avec une boucle for

Exercice 3 - Table de Multiplication

<?php
$table =; // Table de 7

echo "<h3>Table de $table</h3>";
echo "<ul>";

for ($i =; $i <=; $i) {
    $resultat =;
    echo "<li>$table x $i = $resultat</li>";
}

echo "</ul>";
?>

5 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Dans une boucle for, la syntaxe est : <code>for (initialisation; condition; incrémentation)</code>. Le résultat = $table * $i.

php

for ($i = 1; $i <= 10; $i++)
$resultat = $table * $i;

INTERMÉDIAIRE

Objectif : Parcourir un tableau associatif avec foreach et calculer la moyenne

Exercice 4 - Tableau d'Étudiants

<?php
$etudiants = [
    "Jean" => 15,
    "Marie" => 18,
    "Paul" => 12,
    "Sophie" => 16
];

$total =;
$nombre =;

foreach ($etudiants as $nom" value=""> $note) {
    echo "$nom : $note/20<br>";
    $total$note;
}

$moyenne =;
echo "<br>Moyenne de la classe : $moyenne/20";
?>

5 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Utilisez <code>count()</code> pour compter les éléments. Foreach avec clé-valeur : <code>foreach ($array as $key => $value)</code>. Moyenne = total / nombre.

php

$nombre = count($etudiants);
foreach ($etudiants as $nom => $note)
$total += $note;
$moyenne = $total / $nombre;

Formulaires et Interactions

Récupérez et traitez les données utilisateur avec les superglobales.

DÉBUTANT

Objectif : Créer un formulaire et traiter les données POST

Exercice 5 - Formulaire de Contact

<?php
if ($_SERVER['REQUEST_METHOD'] ===) {
    $nom =;
    $email = $_POST[] ?? '';
    
    if (!empty($nom) && !empty($email)) {
        echo "Merci " .. " !";
    } else {
        echo;
    }
}
?>

<form method="POST">
    <input type="text" name="" placeholder="Votre nom" required>
    <input type="email" name="email" placeholder="Votre email" required>
    <button type="submit">Envoyer</button>
</form>

6 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Utilisez <code>trim($_POST['nom'])</code> pour récupérer et nettoyer. <code>htmlspecialchars()</code> pour sécuriser l'affichage.

php

$nom = trim($_POST['nom'] ?? '');
htmlspecialchars($nom)
"Tous les champs sont obligatoires"

Fonctions Personnalisées

Organisez votre code avec des fonctions réutilisables.

AVANCÉ

Objectif : Créer une fonction avec paramètres et valeurs par défaut

Exercice 6 - Calculatrice de Prix TTC

<?php
function calculPrixTTC($prix_ht, $taux_tva =) {
    // Vérifier que le prix est positif
    if ($prix_ht) {
        return;
    }
    
    $prix_ttc =;
    return;
}

// Tests de la fonction
$prix1 = calculPrixTTC(100); // TVA par défaut
$prix2 = calculPrixTTC(50,); // TVA 5.5%
$prix3 = calculPrixTTC(); // Erreur

echo "100€ HT = {$prix1}€ TTC<br>";
echo "50€ HT (5.5%) = {$prix2}€ TTC<br>";
echo $prix3 ? "OK" : "Erreur : prix invalide";
?>

7 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Prix TTC = Prix HT × (1 + taux TVA). Utilisez <code>round($prix, 2)</code> pour arrondir à 2 décimales. Taux TVA 20% = 0.20.

php

$taux_tva = 0.20
if ($prix_ht <= 0)
$prix_ttc = $prix_ht * (1 + $taux_tva);
return round($prix_ttc, 2);

Projets Complets

Combinez tous les concepts dans des mini-projets réalistes.

PROJET

Objectif : Créer un générateur de mot de passe sécurisé avec formulaire

Mini-Projet - Générateur de Mot de Passe

<?php
function genererMotDePasse($longueur =, $inclure_symboles =) {
    $caracteres = 'abcdefghijklmnopqrstuvwxyz';
    $caracteres .=;
    $caracteres .=;
    
    if ($inclure_symboles) {
        $caracteres .=;
    }
    
    $mot_de_passe = '';
    for ($i = 0; $i $longueur; $i++) {
        $index =;
        $mot_de_passe .= $caracteres[$index];
    }
    
    return $mot_de_passe;
}

$mot_de_passe = '';
if () {
    $longueur = (int)($_POST['longueur'] ?? 12);
    $symboles =;
    $mot_de_passe = genererMotDePasse($longueur, $symboles);
}
?>

8 trous à compléter. Vos réponses sont conservées dans ce navigateur ; elles ne sont ni corrigées ni envoyées.

Indice

Majuscules = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', chiffres = '0123456789'. Utilisez <code>rand(0, strlen($caracteres) - 1)</code> pour un index aléatoire. <code>isset($_POST['generate'])</code> pour détecter l'envoi du formulaire.

php

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
'0123456789'
rand(0, strlen($caracteres) - 1)
isset($_POST['generate'])
isset($_POST['symboles'])

Sept exercices, et la suite

Vos réponses restent dans ce navigateur. Reprenez le cours pour les concepts, ou passez aux fonctions et aux tableaux.