Afficher les utilisateurs (vue)

Dans cette vue on va afficher nos utilisateurs de deux façons différentes.
Cela nous permettra de tester différentes façon de gérer la selection d'utilisateur.
Note: Il faudrait vérifier le cas où la liste d'utilisateur est vide.


<form action="../controllers/user-update.php" method="post">
    <label for="user">Selectionne un Utilisateur</label>
    <select name="user" id="user">
        <!-- je boucle sur ma liste d'utilisateur -->
        <?php 
            foreach($users as $user){
        ?>
        <!-- Je met l'id de l'utilisateur en value  -->
        <option value="<?php echo $user["id"] ?>">
        <!-- Je met le nom de l'utilisateur dans l'option -->
                <?php echo $user["username"] ?>
        </option>
        <!-- Je ferme ma boucle. -->
        <?php
            }
        ?>
    </select>
    <input type="submit" value="Selectionner">
</form>


        

Dans cette première partie, on peut voir que l'on crée un formulaire qui nous renverra vers un fichier update.php.
Ce formulaire est composé d'un champ select et d'un bouton de validation seulement.
La particularité est le code php si dessous :


<?php 
    foreach($users as $user){
?>
# html #
<?php echo $user["id"] ?>
# html #
<?php echo $user["username"] ?>
# html #
<?php
    }
?>


        

Le php si dessus prend le tableau de tout les utilisateurs ($users) et en range un différent à chaque itération dans la variable $user.
On ne ferme la boucle qu'une fois le html affiché, ce qui nous permettra d'afficher autant d'option qu'il y a d'utilisateur.
On place l'id d'utilisateur en value de l'option, afin de le récupérer à l'envoi du formulaire. Puis on affiche le nom d'utilisateur entre nos balises options.


<?php 
    foreach($users as $user){
?>
<div>
    <ul>
        <li>id : <?php echo $user["id"] ?></li>
        <li>username : <?php echo $user["username"] ?></li>
        <li>email : <?php echo $user["email"] ?></li>
        <li><a href="../controller/delete.php?id=<?php echo $user["id"] ?>">supprimer</a></li>
    </ul>
</div>
<?php
    }
?>


        

On ne repasse pas sur le php qui est exactement le même que précédement.
La seule différence ici est le lien où l'on passe l'id de l'utilisateur en méthode GET.
delete.php?d=<?php echo $user["id"] ?>
Attention, cette technique est volontairement simplifié pour l'exemple, mais la suppression devrait être plus sécurisé que cela.

Faire le lien entre la vue et le modèle (contrôleur)

Vu que pour cet exemple on va simplement sélectionner tous nos utilisateurs, Le contrôleur sera assez simple.


<?php
// On inclu mon modèle qui s'occupe du lien avec la BDD
include("../models/user-model.php");
// On fait appel à la fonction selectAll() 
// et range le résultat dans une variable
 $users = selectAll();
// On inclu notre vue (view).
include("../views/showusers.php");
?>


        

Comme indiqué précédement, ce contrôleur est très simple.
Il ne nous reste qu'à voir cette fonction selectAll() défini dans notre modèle.

Selectionner nos utilisateurs (modèle)

Après un contrôleur très simple, notre modèle ne sera guère plus difficile.


// Une fonction pour les attraper tous.
function selectAll(){
    // On se connecte.
    $pdo = connexion();
    // Pas besoin de préparer la requête car aucune variable entré 
    // par l'utilisateur ne rentre en compte.
    $prep = $pdo->query('SELECT * FROM user');
    // On récupère tout nos résultats sous forme de tableau.
    return $prep->fetchAll();
}


        

On pourrait compliquer la fonction avec des options de recherche, limiter le nombre de résultat ou que sais je encore.
Mais pour les sélectionner tous, ce n'est pas plus compliqué que cela.

Fichiers complets :

  • Modèle
  • Vue
  • Contrôleur

<?php
# ---- Ici la connexion rangé dans la variable $pdo ---- #
// Une fonction pour les attraper tous.
function selectAll(){
    // On utilise notre fonction de connexion.
    $pdo = connexion();
    // Pas besoin de préparer la requête car aucune variable entré 
    // par l'utilisateur ne rentre en compte.
    $prep = $pdo->query('SELECT * FROM user');
    // On récupère tout nos résultats sous forme de tableau.
    return $prep->fetchAll();
}
?>

                

<form action="../controllers/user-update.php" method="post">
    <label for="user">Selectionne un Utilisateur</label>
    <select name="user" id="user">
        <!-- je boucle sur ma liste d'utilisateur -->
        <?php 
            foreach($users as $user){
        ?>
        <!-- Je met l'id de l'utilisateur en value  -->
        <option value="<?php echo $user["id"] ?>">
        <!-- Je met le nom de l'utilisateur dans l'option -->
                <?php echo $user["username"] ?>
        </option>
        <!-- Je ferme ma boucle. -->
        <?php
            }
        ?>
    </select>
    <input type="submit" value="Selectionner">
</form>
<?php 
    foreach($users as $user){
?>
<div>
    <ul>
        <li>id : <?php echo $user["id"] ?></li>
        <li>username : <?php echo $user["username"] ?></li>
        <li>email : <?php echo $user["email"] ?></li>
        <li><a href="../controller/delete.php?id=<?php echo $user["id"] ?>">supprimer</a></li>
    </ul>
</div>
<?php
    }
?>

                

<?php
// On inclu mon modèle qui s'occupe du lien avec la BDD
include("../models/user-model.php");
// On fait appel à la fonction selectAll() 
// et range le résultat dans une variable
$users = selectAll();
// On inclu notre vue (view).
include("../views/showusers.php");
?>