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=________________
:
id
est l'identifiant de l'article ;key
est la clé de sécurité de la liste.Créez le script remove.php
et vérifiez que les données sont correctement reçues
par le script.
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é :
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']);