📚 Fiche Résumé - Séance 5 : Intégration PHP et inclusion de fichiers

🎯 Objectifs de la séance

📂 1. Inclusion de fichiers : include() et require()

Pourquoi inclure des fichiers ?

L'inclusion permet de :

include() - Inclusion souple

<?php
include('header.php');
?>

require() - Inclusion obligatoire

<?php
require('header.php');
?>
⚖️ include() vs require() :
Exemple d'utilisation typique :
<?php
// Données essentielles
require('datas.php');

// Structure de page essentielle
require('header.php');
?>

<!-- Contenu spécifique de la page -->
<h1>Bienvenue</h1>

<?php
// Pied de page essentiel
require('footer.php');
?>

include_once() et require_once()

<?php
require_once('config.php');
include_once('functions.php');
?>

Versions avec _once : le fichier ne sera inclus qu'une seule fois, même si appelé plusieurs fois. Utile pour éviter les redéfinitions de fonctions ou de variables.

🗂️ 2. Tableaux à deux dimensions

Structure d'un tableau 2D

Un tableau à deux dimensions est un tableau de tableaux (tableau contenant d'autres tableaux).

Exemple avec des personnages :
<?php
$personnages = [
    0 => [
        'nom' => 'Scarlet',
        'url_image' => 'images/scarlet.jpg',
        'presentation' => 'Guerrière intrépide',
        'histoire' => 'Née dans les montagnes...'
    ],
    1 => [
        'nom' => 'Gandor',
        'url_image' => 'images/gandor.jpg',
        'presentation' => 'Mage puissant',
        'histoire' => 'Maître des arcanes...'
    ],
    2 => [
        'nom' => 'Elara',
        'url_image' => 'images/elara.jpg',
        'presentation' => 'Voleuse agile',
        'histoire' => 'Experte en infiltration...'
    ]
];
?>

Accès aux données

<?php
// Accéder au nom du premier personnage
echo $personnages[0]['nom']; // Affiche : Scarlet

// Accéder à l'image du deuxième personnage
echo $personnages[1]['url_image']; // Affiche : images/gandor.jpg

// Accéder à l'histoire du troisième personnage
echo $personnages[2]['histoire'];
?>

Parcourir un tableau 2D avec foreach

<?php
foreach ($personnages as $indice => $personnage) {
    echo "<h2>" . $personnage['nom'] . "</h2>";
    echo "<img src='" . $personnage['url_image'] . "' alt='" . $personnage['nom'] . "'>";
    echo "<p>" . $personnage['presentation'] . "</p>";
}
?>
⚠️ Points clés :

🔗 3. Récupération de données avec $_GET

Qu'est-ce que $_GET ?

$_GET est un tableau superglobal qui contient les données passées dans l'URL.

Exemple d'URL :
character.php?id=2

Dans ce cas, $_GET['id'] vaut 2

Récupérer une valeur de $_GET

<?php
// URL : character.php?id=2
$id = $_GET['id']; // $id vaut 2
echo "ID du personnage : " . $id;
?>

Vérifier l'existence avec isset()

⚠️ Toujours vérifier avec isset() !
<?php
// Si l'URL ne contient pas ?id=..., on met une valeur par défaut
if (isset($_GET['id'])) {
    $id = $_GET['id'];
} else {
    $id = 0; // Valeur par défaut
}

// Ou en version courte avec l'opérateur ternaire
$id = isset($_GET['id']) ? $_GET['id'] : 0;

// Ou encore plus court avec ?? (null coalescing operator - PHP 7+)
$id = $_GET['id'] ?? 0;
?>

Créer des liens avec $_GET

<?php
// Dans une boucle foreach
foreach ($personnages as $indice => $personnage) {
    echo "<a href='character.php?id=" . $indice . "'>";
    echo $personnage['nom'];
    echo "</a>";
}
?>
Liens générés :
<a href='character.php?id=0'>Scarlet</a>
<a href='character.php?id=1'>Gandor</a>
<a href='character.php?id=2'>Elara</a>

🎨 4. Intégration HTML/PHP

Transformer HTML statique en PHP dynamique

Avant (HTML statique) :
<li>
    <div class="box">
        <a href="character.php">
            <img src="images/g6.jpg" alt="_" />
            <h4>Personnage</h4>
        </a>
    </div>
</li>
Après (PHP dynamique) :
<?php foreach ($personnages as $indice => $personnage): ?>
<li>
    <div class="box">
        <a href="character.php?id=<?php echo $indice; ?>">
            <img src="<?php echo $personnage['url_image']; ?>" 
                 alt="<?php echo $personnage['nom']; ?>" />
            <h4><?php echo $personnage['nom']; ?></h4>
        </a>
    </div>
</li>
<?php endforeach; ?>

Syntaxe alternative pour les structures de contrôle

Quand on mélange HTML et PHP, la syntaxe alternative est plus lisible :

Structure Syntaxe classique Syntaxe alternative
if if () { ... } if (): ... endif;
foreach foreach () { ... } foreach (): ... endforeach;
while while () { ... } while (): ... endwhile;
for for () { ... } for (): ... endfor;

🔧 5. Exemple complet : Page de détail avec $_GET

<?php
// Inclusion des données
require('datas.php');

// Récupération de l'ID dans l'URL (par défaut 0)
$id = isset($_GET['id']) ? $_GET['id'] : 0;

// Récupération du personnage correspondant
$personnage = $personnages[$id];

// Inclusion du header
require('header.php');
?>

<!-- Affichage dynamique du personnage -->
<div class="character-detail">
    <h3><?php echo $personnage['nom']; ?></h3>
    
    <img src="<?php echo $personnage['url_image']; ?>" 
         alt="<?php echo $personnage['nom']; ?>" />
    
    <p class="presentation">
        <?php echo $personnage['presentation']; ?>
    </p>
    
    <p class="histoire">
        <?php echo $personnage['histoire']; ?>
    </p>
</div>

<?php
// Inclusion du footer
require('footer.php');
?>

📋 6. Organisation type d'un projet avec inclusion

projet/
│
├── index.php           (page d'accueil)
├── character.php       (page de détail)
├── datas.php           (données - tableaux)
├── header.php          (en-tête commun)
├── footer.php          (pied de page commun)
│
└── images/
    ├── scarlet.jpg
    ├── gandor.jpg
    └── elara.jpg
💡 Bonnes pratiques :

✅ Points clés à retenir

💡 Tableau récapitulatif

Fonction Usage Erreur si fichier absent
include() Inclusion souple Warning (continue)
require() Inclusion obligatoire Fatal error (arrêt)
include_once() Inclusion unique souple Warning (continue)
require_once() Inclusion unique obligatoire Fatal error (arrêt)