FriconiX
Des milliers de pictogrammes gratuits dessinés avec amour !

Partie 7. Suppresion d'un article

Script de traitement

Dans la page /list/index.php, transformez le bouton de suppresion d'un article en lien tout en gardant l'aspect visuel du bouton. Ce lien devra redirigez vers la page /list/remove.php?id=_____&key=________________ :

Créez le script remove.php et vérifiez que les données sont correctement reçues par le script.

Vérification de la clé

Avant de supprimer l'article, nous allons vérifiez que la clé de sécurité est bien associée à l'article. Plus précisement, nous allons vérifier que la clé est bien associé à la liste qui est associée à l'article.

Le problème ici est que la clé de sécurité n'est pas directement dans la table article. Une solution serait de procéder en deux temps :

MySQL est un langage relationnel qui permet de réaliser ces deux opérations en une seule requête grâce à un mécanisme appelé jointure. Voici le code qui permet de récupérer la clé de sécurité directement à partir de l'identifiant de l'article :

SELECT articles.*, lists.ukey FROM articles INNER JOIN lists ON lists.id = articles.id_list WHERE articles.id = 5

Testez la fonction dans phpMyAdmin, et vérifiez que vous récupérez bien les données de l'article, ainsi que la clé de sécurité :

résultat de la jointure dans phpMyAdmin

Suppression de l'article

Pour la suppression d'un article, nous pourrions procéder en deux étapes : la vérification puis la suppression. Pour optimiser notre code, nous n'allons réalisé qu'une seule requête avec une jointure. En vous inspirant de la jointure précédente, écrire et tester dans phpMyAdmin une requête de suppression d'un article par son identifiant et sa clé de sécurité. La fin de la requête doit être du type :

... WHERE articles.id = :id AND lists.ukey=:key

Dans la bibliothèque /lib/lib.php ajoutez une fonction removeArticle($db, $id_article, $key) qui supprime un article passé en paramètre par son identifiant et sa clé de sécurité (seulement si la clé de sécurité est valide, sinon l'article n'est pas supprimé).

Une fois l'article supprimé, redirigez l'utilisateur vers la page précédente à l'aide l'instruction suivante :

header('Location: ' . $_SERVER['HTTP_REFERER']);

Voir aussi


Dernière mise à jour : 20/12/2019