include() et require()$_GETL'inclusion permet de :
<?php
include('header.php');
?>
<?php
require('header.php');
?>
require() pour les fichiers essentiels (header, config, données)include() pour les fichiers optionnels (widgets, publicités)<?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');
?>
<?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.
Un tableau à deux dimensions est un tableau de tableaux (tableau contenant d'autres tableaux).
<?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...'
]
];
?>
<?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'];
?>
<?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>";
}
?>
$indice : position dans le tableau (0, 1, 2...)$personnage : tableau associatif contenant les infos$personnage['nom'] : accès à une clé spécifique$_GET est un tableau superglobal qui contient les données passées dans l'URL.
character.php?id=2
Dans ce cas, $_GET['id'] vaut 2
<?php
// URL : character.php?id=2
$id = $_GET['id']; // $id vaut 2
echo "ID du personnage : " . $id;
?>
<?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;
?>
<?php
// Dans une boucle foreach
foreach ($personnages as $indice => $personnage) {
echo "<a href='character.php?id=" . $indice . "'>";
echo $personnage['nom'];
echo "</a>";
}
?>
<a href='character.php?id=0'>Scarlet</a>
<a href='character.php?id=1'>Gandor</a>
<a href='character.php?id=2'>Elara</a>
<li>
<div class="box">
<a href="character.php">
<img src="images/g6.jpg" alt="_" />
<h4>Personnage</h4>
</a>
</div>
</li>
<?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; ?>
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; |
<?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');
?>
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
require() pour les fichiers essentielsisset($_GET['...'])require() : inclusion obligatoire (erreur fatale si fichier absent)include() : inclusion souple (warning si fichier absent)$tableau[indice]['cle']foreach ($tab as $indice => $element) : parcourir un tableau$_GET['parametre'] : récupérer une donnée de l'URLisset() avant d'accéder à $_GETforeach(): ... endforeach;page.php?id=valeur| 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) |