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 :)

6 réponses


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;
}

J'ai toujours le même probleme renvoi directement vers la page blog.php

T'as quoi dans $req_article ? Fais voir ce que donnes un var_dump dessus.

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 :)

Salut,

j'ai pas vraiment compris le début