Soucis de redirection
europe21
Messages postés
62
Date d'inscription
Statut
Membre
Dernière intervention
-
europe21 Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
europe21 Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous ,
j'ai un souci de redirection, sur mon blog j'ai un système de signalement des commentaires. lorsqu'un commentaire est signalé je veux rester sur la meme page. J'ai une redirection type: header('Location: index.php?action=post&id='. $postId);le probleme c'est qu'elle ne me reconnait pas $postId et si je mets $_GET['id'] il m'envoie sur l'id du commentaire mais moi je veux l'id du post. Cela fait 2 jours que je suis dessus et je n'y arrive pas . je suis en mvc orienté objet.
Voici mon manager:
le controller:
mon routeur:
et ma page:
voici mon github:https://github.com/stephaneurope/blog_forteroche
merci de votre aide
j'ai un souci de redirection, sur mon blog j'ai un système de signalement des commentaires. lorsqu'un commentaire est signalé je veux rester sur la meme page. J'ai une redirection type: header('Location: index.php?action=post&id='. $postId);le probleme c'est qu'elle ne me reconnait pas $postId et si je mets $_GET['id'] il m'envoie sur l'id du commentaire mais moi je veux l'id du post. Cela fait 2 jours que je suis dessus et je n'y arrive pas . je suis en mvc orienté objet.
Voici mon manager:
//fonction permettant le signalement public function boolean($commentId){ $db = $this->dbConnect(); $req = $db->prepare('UPDATE comments SET moderate = 1 WHERE id = ?'); $comment =$req->execute(array($commentId)); return $comment; } //fonction permettant de recupérer mon post grace a son id public function getPost($postId) { $db = $this->dbConnect(); $req = $db->prepare('SELECT id,user_id, title,chapter, content, DATE_FORMAT(creationDate, \'%d/%m/%Y-\') AS creation_date_fr FROM posts WHERE id = ?'); $req->execute(array($postId)); $post = $req->fetch(); return $post; }
le controller:
//permet le signalement et la redirection public function moderate($commentId) { $commentManager = new \Forteroche\Blog\Model\CommentManager(); $comment = $commentManager->boolean($commentId); header('Location: index.php?action=post&id='. $postId); } //permet de recuperer mon post public function post() { $postManager = new \Forteroche\Blog\Model\PostManager(); $commentManager = new \Forteroche\Blog\Model\CommentManager(); $post = $postManager->getPost($_GET['id']); $comments = $commentManager->getComments($_GET['id']); $chapters = $postManager->getPosts(); $view = new View('postView'); $view->generer(['post' => $post,'comments' => $comments,'chapters'=>$chapters]); }
mon routeur:
//signalement elseif ($_GET['action'] == 'moderate'){ if (isset($_GET['id']) && $_GET['id'] > 0) { $ctrlfrontend->moderate($_GET['id']); } } // permet d’appeler mon post elseif ($_GET['action'] == 'post') { if (isset($_GET['id']) && $_GET['id'] > 0) { $ctrlfrontend->post($_GET['id']); } }
et ma page:
<?php require_once('controller/session.class.php'); $Session = new \Forteroche\Blog\Session(); ?> <?php $this->title = htmlspecialchars($post['title']) ?> <?php include "menu.php"?> <!-- Intro Header --> <header class="masthead"> <div class="intro-body"> <div class="container"> <div class="row"> <div class="col-lg-12 mx-auto"> <h1 class="brand-heading">Jean Forteroche</h1> <p class="intro-text">Billet simple pour l'Alaska</p> </div> </div> </div> </div> </header> <div class="news"> <h3> <?= htmlspecialchars($post['chapter']) ?> : <?= htmlspecialchars($post['title']) ?> <em>le <?= $post['creation_date_fr'] ?></em> </h3> <div class='post'> <?= $post['content'] ?> <br/> <br/><a href="index.php">Retour à la liste des chapitres</a></div> </div> <div class="comment"> <h3>Commentaires</h3></div> <?php while ($comment = $comments->fetch()) { ?> <div class="modif"> <p style='margin-bottom:0;'><strong><?= htmlspecialchars($comment['author']) ?></strong> le <?= $comment['comment_date_fr'] ?> </p> <?php if($comment['moderate']== '0') { ?> <form action="index.php?action=moderate&id= <?= htmlspecialchars($comment['id']) ?>" method="post"> <input href="#" class='signal' type="submit" value='signaler' /> </form> <?php } else{ ?> <form action="" method="post"> <input class='signal' type="submit" value='commentaire signalé' style='color:red' /> </form> <?php } ?> <p> <?= nl2br(htmlspecialchars($comment['comment']))?> </p> </div> <?php } ?> <div class="comment"> <h3>Laissez un commentaire</h3></div> <div class="news"> <form action="index.php?action=addComment&id= <?= $post['id']?>" method="post"> <div> <label for="author">Auteur</label> <br />
voici mon github:https://github.com/stephaneurope/blog_forteroche
merci de votre aide
A voir également:
- Soucis de redirection
- L'url suivante, censée aboutir à un article, donne lieu à une redirection indiquant que la page n'a pas été trouvée. retrouvez la page recherchée. reportez le titre de l’article et son auteur. - Forum Microsoft Edge / Internet Explorer
- Redirection de mail - Guide
- Problème 'Cette page Web présente une boucle de redirection' ✓ - Forum Google Chrome
- Redirection 410 - Forum MacOS
- Retrouver un url interrogé ✓ - Forum Réseaux sociaux
1 réponse
Bonjour,
Commence donc par appliquer ces quelques principes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
(surtout la partie où il est question de récupérer "proprement" les variables AVANT de les utilsier
.
Commence donc par appliquer ces quelques principes :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
(surtout la partie où il est question de récupérer "proprement" les variables AVANT de les utilsier
.
Je suis débutant ,pourrais tu etre plus précis et me dire ou je dois modifier le code car mon routeur verifie les $_Get avec un isset que dois je faire de plus? Au niveau de mon controller peut etre?
merci de ta patience.
devient :
pareil pour ta variable $action ...
Ensuite.. je ne comprend pas....
Ta méthode moderate a en paramètre la variable $commentId .... sauf que tu ne l'utilises pas dans ton code ensuite... pourquoi ?
Puis dans ta redirection
... tu utilises la variable $postId ... mais... elle est défini où ?? Il faudrait sûrement la passer en paramètre de ta méthode non ? (pour pouvoir l'utiliser dedans..... )
NB: Pense à mettre un EXIT après chaque redirection ...