Utilisateurs

Il faut modifier notre fichier utilisateur/index.php pour qu’il récupère tous les utilisateurs depuis la base de données.
Méthode : utilisateur/index.php
Nous commençons par modifier la section responsable de la récupération des données des utilisateurs.
Nous ajoutons également un lien vers une page permettant d’ajouter de nouveaux utilisateurs.
Le composant est ensuite enrichi pour inclure deux liens d’action :
Lien de suppression : redirige vers la page qui supprime l’utilisateur correspondant à son identifiant.
Lien de modification : redirige vers la page qui permet de modifier les informations de l’utilisateur identifié.
// ============================== // CONNEXION À LA BASE DE DONNÉES // ==============================$db = require '../bdd.php';
// ==============================// INCLUSION HELPERS// ==============================require '../helpers.php';
// ==============================// RÉCUPÉRATION DE LA LISTE// ==============================// Requête SQL pour récupérer tous les utilisateurs$sql = 'SELECT * FROM utilisateurs';
// Préparation de la requête$statement = $db->prepare($sql);
// Exécution de la requête$statement->execute();
// Récupération de tous les résultats sous forme de tableau$listeUtilisateurs = $statement->fetchAll();
// ==============================// VARIABLES POUR LA VUE// ==============================// Chemin de base pour les inclusions$page_base = '../';
// Titre dynamique de la page$page_title = 'Afficher les utilisateurs';
// Feuilles de styles spécifiques à la page$page_styles = ['utilisateur', 'card'];
<html lang='fr'>
require "$page_base/head.php";
<body>
require "$page_base/header.php";
<main>
<h1>Afficher</h1>
<a href="utilisateur/create.php" class="btn-create">Ajouter</a>
<ul class="utilisateur-list">
foreach ($listeUtilisateurs as $utilisateur):
<li>
$card = [
'src' => $utilisateur['photo'],
'alt' => "photo de {$utilisateur['nom']} {$utilisateur['prenom']}",
'figcaption' => "{$utilisateur['nom']} {$utilisateur['prenom']} - {$utilisateur['age']} ans",
'show' => "utilisateur/show.php?id={$utilisateur['id']}",
'delete' => "utilisateur/delete.php?id={$utilisateur['id']}",
'update' => "utilisateur/update.php?id={$utilisateur['id']}"
];
require("$page_base/components/card.php");
</li>
endforeach;
</ul>
</main>
require "$page_base/footer.php";
</body>
</html>
Un bouton ajouter permet de faire un lien vers la page create.php.
<a href="utilisateur/create.php" class="btn-create">Ajouter</a>
Méthode : composants/card.php
Nous modifions notre composant pour qu'il ajoute deux liens : un pour la suppression et un pour la modification.
if (isset($card['show'])):
<a href="= $card['show'] ">
endif;
<figure class="card">
<img src='= $card['src'] ' alt='= $card['alt'] ' />
<figcaption>
= $card['figcaption']
if (isset($card['delete']) || isset($card['update'])):
<p>
if (isset($card['delete'])):
<a class="btn-logo btn-delete" href="= $card['delete'] ">supprimer</a>
endif;
if (isset($card['update'])):
<a class="btn-logo btn-update" href="= $card['update'] ">modifier</a>
endif;
</p>
endif;
</figcaption>
</figure>
if (isset($card['show'])):
</a>
endif;
Si les clés $card['delete'] et $card['update'] ne sont pas définies, aucun lien n’est affiché.
Dans le cas contraire, deux liens sont générés :
Lien de suppression : affiché sous forme d’icône, il redirige vers la page permettant de supprimer l’utilisateur correspondant à son identifiant.
<a class="btn-logo btn-delete" href="= $card['delete'] ">supprimer</a>
Lien de modification : affiché sous forme d’icône, il redirige vers la page permettant de modifier les informations de l’utilisateur correspondant à son identifiant.
<a class="btn-logo btn-update" href="= $card['update'] ">modifier</a>
Méthode : Dossier images
Dans le dossier public/css/images on ajoute les logos delete et update.


Méthode : css/utilisateur.css
Modification du css utilisateur.
/* =============================== Liste de figures (utilisateurs) =============================== */.utilisateur-list {list-style: none;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
gap: 1.5rem;
padding: 0;
margin: 0;
}
/* =============================== Bouton Ajouter =============================== */.btn-create {display: inline-block;
padding: 0.5rem 1.2rem;
margin: 1rem 0;
background-color: #0066cc;
color: #fff;
font-size: 1rem;
font-weight: 500;
border-radius: 6px;
text-decoration: none;
transition: background-color 0.2s, transform 0.2s;
}
.btn-create:hover {
background-color: #004999;
transform: translateY(-2px);
}