Bonjour, voila depuis 2/3 jours je rencontre un probleme avec ma page pour éditer mes articles de mon blog, celle-ci fonctionner correctement juste la hors je n'est rien changer, quand je suis sur la page de l'article donc celle ci fonctionner bien vu qu'elle me recupere bien l'article donc quand je fait un renvoi pour l'éditer celle-ci me renvoi directement sur ma page blog.php
$titre = null;
if(!isset($_GET['id'])){
header('location: blog.php');
exit;
}
$get_id_article = (int) $_GET['id'];
if($get_id_article <= 0){
header('location: index.php');
exit;
}
$req = $DB->prepare("SELECT a.*, a.titre AS name_blog
FROM blog ");
$req->execute([$get_id_article]);
$req_article = $req->fetch();
if(!isset($req_article['id'])){
header('location: blog.php');
exit;
}
if($req_article['id_utilisateur'] <> $_SESSION['id']){
header('location: article.php?id=' .$req_article['id']);
exit;
}
de plus j'ai fait un var_dump($_GET); exit; il me donne array(1) { ["id"]=> string(1) "7" } puis un
var_dump($req_article); exit; apres la variable du meme nom celui-ci me donne bool(false)
Merci de l'aide :)
Salut.
C'est parce que tu donnes un param à execute
alors qu'il n'y en a pas dans la requête. Tu dois ajouter where id=:id
pour ne récupérer que l'article en question.
Et puisque tu ne fais la requête que pour vérifier que l'article existe tu n'as pas besoin de renvoyer a.*
, l'ID suffit.
$req = $DB->prepare("SELECT id AS name_blog FROM blog WHERE id=:id");
$req->execute(['id' => $get_id_article]);
$req_article = $req->fetch();
Et pour simplifier un peu :
if (!isset($_GET['id'])){
header('location: blog.php');
exit;
}
$get_id_article = (int) $_GET['id'];
if ($get_id_article <= 0){
header('location: index.php');
exit;
}
devient (en renommant $get_id_article
en $id_article
car osef du prefix get_
)
$id_article = (int) ($_GET['id'] ?? 0);
if ($id_article <= 0){
header('location: index.php');
exit;
}
Voila ce que ca me donne, array(2) { ["name_blog"]=> string(1) "4" [0]=> string(1) "4" } sachant que ça m'envoi sur le bon lien avec le bonne idée
Hello,
Mis à part les problèmes décris par les autres membres à savoir:
La requête SQL ne spécifie pas l'article à récupérer. Il manque la condition WHERE
La méthode execute() de l'objet $req utilise un tableau en argument, mais ce tableau n'est pas correctement formaté. Il devrait contenir les valeurs des paramètres de la requête, mais il n'y a qu'une seule valeur passée en argument. et sache aussi qu'il n'est pas nécessaire d'utiliser un tableau dans ce cas-ci, car il n'y a qu'un seul paramètre à passer.
Ensuite utilise plutôt l'opérateur de comparaison "!=" plutôt que "<>". et ça devrait le faire :)