Représenter des contacts avec des tableaux
Objectif : Construire un tableau de contacts et accéder à leurs champs pour afficher des informations dans la page du carnet.
Une liste de contacts ne peut pas rester une série de valeurs provisoires éparpillées dans la page. Vous devez regrouper les informations de chaque personne dans une structure cohérente, afin de pouvoir les réutiliser pour l’affichage et, plus tard, pour les opérations du carnet.
Dans cette leçon, vous remplacez les exemples provisoires de la page par des contacts représentés en PHP. Vous accédez à leur nom, leur adresse e-mail et leur téléphone par des clés explicites, puis vous affichez les données dans le HTML en reprenant l’échappement vu précédemment.
Un contact est un tableau associatif
Un contact possède plusieurs propriétés qui n’ont pas le même sens : un nom, une adresse e-mail et un téléphone. Un tableau associatif associe une clé descriptive à chaque valeur. Vous pouvez ainsi demander explicitement le champ nom plutôt que de dépendre de la position d’une valeur dans une liste.
<?php
declare(strict_types=1);
$contact = [
'nom' => 'Mina Diallo',
'courriel' => '[email protected]',
'telephone' => '06 12 34 56 78',
];
$nom = $contact['nom'];
$courriel = $contact['courriel'];
$telephone = $contact['telephone'];
var_dump($nom, $courriel, $telephone);string(11) "Mina Diallo"
string(30) "[email protected]"
string(14) "06 12 34 56 78"Les clés entre crochets, comme $contact['nom'], donnent accès aux valeurs du tableau. Gardez les mêmes clés d’un contact à l’autre : cette régularité permettra au code de traiter les données sans ambiguïté. Le téléphone est ici une chaîne, car il peut contenir des espaces et un zéro initial qui ne doivent pas être interprétés comme un nombre.
Regrouper plusieurs contacts
Pour représenter le carnet, placez plusieurs tableaux de contact dans un tableau extérieur. Chaque élément extérieur contient alors un contact complet. Cette organisation est dite imbriquée : les clés 0 et 1 désignent les positions des contacts, tandis que les clés nom, courriel et telephone désignent leurs champs.
<?php
declare(strict_types=1);
$titre = 'Carnet de contacts';
$carnetOuvert = true;
$nombreContacts = 2;
$versionPhp = PHP_VERSION;
$contacts = [
[
'nom' => 'Mina Diallo',
'courriel' => '[email protected]',
'telephone' => '06 12 34 56 78',
],
[
'nom' => 'Hugo Martin',
'courriel' => '[email protected]',
'telephone' => '07 98 76 54 32',
],
];
$premierNom = $contacts[0]['nom'];
$secondCourriel = $contacts[1]['courriel'];
?>
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?= htmlspecialchars($titre, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="carnet-page">
<header class="carnet-entete">
<h1><?= htmlspecialchars($titre, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></h1>
</header>
<main class="carnet-principal">
<section aria-labelledby="titre-contacts">
<h2 id="titre-contacts">Exemples de contacts</h2>
<ul class="carnet-liste">
<li class="carnet-contact">
<h3><?= htmlspecialchars($premierNom, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></h3>
<p><?= htmlspecialchars($contacts[0]['courriel'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></p>
<p><?= htmlspecialchars($contacts[0]['telephone'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></p>
</li>
<li class="carnet-contact">
<h3><?= htmlspecialchars($contacts[1]['nom'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></h3>
<p><?= htmlspecialchars($secondCourriel, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></p>
<p><?= htmlspecialchars($contacts[1]['telephone'], ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8') ?></p>
</li>
</ul>
</section>
</main>
</div>
</body>
</html>La page affiche les contacts Mina Diallo et Hugo Martin, avec leur adresse e-mail et leur téléphone. Chaque valeur dynamique est échappée avant son insertion dans le HTML.Ce fichier reprend l’état de index.php établi dans les leçons précédentes : les variables de titre, d’état du carnet, de nombre de contacts et de version PHP sont conservées. Le tableau $contacts ajoute les données structurées ; les deux accès illustrent la notation imbriquée, par exemple $contacts[0]['nom']. L’affichage est volontairement écrit pour ces deux exemples : la boucle qui évitera cette répétition sera abordée dans la leçon consacrée à l’affichage d’une liste.
À retenir
- Un tableau associatif relie des clés descriptives, comme `nom`, à des valeurs.
- Un tableau de contacts peut contenir un tableau associatif par contact.
- Accédez à un champ avec sa clé, par exemple `$contact['courriel']`.
- Choisissez des clés cohérentes et échappez les valeurs avant de les afficher dans le HTML.
Dans la prochaine leçon, vous parcourrez ce tableau pour afficher automatiquement la liste complète des contacts, y compris lorsque leur nombre change.