Selectionner l'utilisateur (vue)

Pour pouvoir supprimer un utilisateur, il va falloir le sélectionner.
Le plus simple pour cela est de récupérer son id.
On pourrait par exemple utiliser un des affichages utilisé dans notre affichage des utilisateurs.


<li><a href="../controller/delete.php?id=<?php echo $user["id"] ?>">supprimer</a></li>


        

Ceci est pour rappel, une façon de faire simple et fonctionnelle mais qui souffre d'une faible sécurité.
Un chapitre à part parlera de sécurité.

Demande de suppression (contrôleur)

Quand on arrive sur notre page de suppression, il nous faut vérifier si on a bien un id envoyé en GET (ou POST selon ce que vous utilisez).


<?php
// On inclu mon modèle qui s'occupe du lien avec la BDD
include("../models/user-model.php");
if(isset($_GET['id']) && !empty($_GET['id'])){
    # Tout le reste de notre code ici #
}
// On redirige vers notre affichage des utilisateurs.
header('Location: user-read.php');
?>


        

Ensuite on va vérifier que notre id est bien un nombre avant d'utiliser la fonction qu'on va définir dans notre modèle.


// On transforme la chaîne de caractère en integrer.
// Si elle contient autre chose qu'un nombre, cela retournera 0.
$id = (int)$_GET['id'];
// Si la variable $id n'est pas 0, alors on utilise la fonction delete 
// déclaré dans notre modèle.
if($id){
    delete($id);
}


        

Suppression de l'utilisateur (modèle)

La dernière étape pour la suppression est l'envoie d'une requête préparé à notre base de donnée :


function delete($id){
    // On récupère notre connexion.
    $pdo = connexion();
    // On prépare notre requête sql
    $prep = $pdo->prepare('DELETE FROM user WHERE id=:id');
    // on exécute notre requête avec notre id en 
    // paramètre.
    $prep->execute(["id"=>$id]);
}


        

Faites attention avec le SQL "DELETE" si vous oubliez le "WHERE" c'est toute votre table qui sera portée disparut.

Fichiers complets :

  • Modèle
  • Vue
  • Contrôleur

# ---- Ici la connexion rangé dans la variable $pdo ---- #
function delete($id){
    // on se connecte à notre bdd.
    $pdo = connexion();
    // On prépare notre requête sql
    $prep = $pdo->prepare('DELETE FROM user WHERE id=:id');
    // on exécute notre requête avec notre id en 
    // paramètre.
    $prep->execute(["id"=>$id]);
}

            

<li><a href="delete.php?id=<?php echo $user["id"] ?>">supprimer</a></li>


            

<?php
// On inclu mon modèle qui s'occupe du lien avec la BDD
include("../models/user-model.php");
if(isset($_GET['id']) && !empty($_GET['id'])){
    // On transforme la chaîne de caractère en integrer.
    // Si elle contient autre chose qu'un nombre, cela retournera 0.
    $id = (int)$_GET['id'];
    // Si la variable $id n'est pas 0, alors on utilise la fonction delete 
    // déclaré dans notre modèle.
    if($id){
        delete($id);
    }
}
// On redirige vers notre affichage des utilisateurs.
header('Location: user-read.php');
?>