IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Ajout de commentaire : impossible de récupérer l'id du billet


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Journaliste - formateur web
    Inscrit en
    Octobre 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Journaliste - formateur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 35
    Points : 37
    Points
    37
    Par défaut Ajout de commentaire : impossible de récupérer l'id du billet
    Bonjour,

    Dans le cadre de mon projet 3, j'essaie d'enregistrer des commentaires dans mes billets. J'ai beau relire mon code, je ne vois pas où cela cloche. A chaque fois que je veux enregistrer un commentaire, je me retrouve face au message d'erreur "Erreur : aucun identifiant de billet envoyé" (indiqué dans l'index).

    J'indique pourtant dans la vue le chemin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="index.php?action=addComment&amp;id=<?= $data['post_id'] ?>" method="post">
    Et dans le formulaire, j'ai tt de même rajouté un champs caché pour rappeler l'id du post >> <input type="hidden" name="post_id" value="<?php $_GET['post_id'] ?>" >
    Rien n'y fait !

    Savez-vous pourquoi je n'arrive pas à récupérer l'id du post ?

    Voici ma requête dans le modele :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     public function postComment($postId, $comauthor, $comcontent)
        {
            $db = $this->dbConnect();
            $comment = $db->prepare('INSERT INTO comment(post_id, com_author, com_content, com_date) VALUES(?, ?, ? NOW())');
            $affectedLines = $comment->execute(array($postId, $comauthor, $comcontent));
     
            return $affectedLines;
        }
    Voici ma requête dans le contrôleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function addComment($postId, $comauthor, $comcontent)
    {  
        $affectedLines = postComment($postId, $comauthor, $comcontent);
     
        if ($affectedLines === false) {
            die('Impossible d\'ajouter le commentaire !');
        }
        else {
            header('Location: index.php?action=post&id=' . $postId);
        }
     
    }
    Voici ma vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    <?php $title = 'Billet simple pour l\'Alaska'; ?>
     
    <?php ob_start(); ?>
     
    <?php
    while ($data = $post->fetch())
    {
    ?>
     
    <?= htmlspecialchars($data['post_title']) ?><br>
    publié le <?= $data['post_date_fr'] ?>
    <p>
    <?= nl2br(htmlspecialchars($data['post_content'])) ?>
    </p>
     
     <h2>Commentaires</h2>
     
    <?php
     
    while ($comment = $comments->fetch())
    {
    ?>
     
    <?= 'Par ' . htmlspecialchars($comment['com_author']) .'' ?><br>
    Le <?= $comment['com_date_fr'] ?>
    <p>
    <?= nl2br(htmlspecialchars($comment['com_content'])) ?>
    </p>
     
    <?php
    }
    $comments->closeCursor();
    ?>
     
    <?php
    }
    $post->closeCursor();
    ?>
     
     
     
     
    <form action="index.php?action=addComment&amp;id=<?= $data['post_id'] ?>" method="post">
     
        <input type="hidden" name="post_id" value="<?php $_GET['post_id'] ?>" >
     
        <fieldset>
            <table>
                <legend>Ajoutez un commentaire</legend>
                <tr><td><label>Votre prénom / pseudo : </label></td><td><input type="text" name="com_author" size="92"></td></tr>
                <br/>
                <tr><td><label>Votre commentaire : </label></td><td><textarea type="text" name="com_content" rows="8" cols="90"></textarea></td></tr>
                <tr><td><input type="submit" value="Envoyez"></td></tr>
            </table>
        </fieldset>
    </form>
     
     
     
     
    <br/>
    <a href="index.php?action=listPosts">Découvrez les autres chapitres !</a>
    <?php $content = ob_get_clean(); ?>
     
    <?php require('template.php'); ?>
    Enfin, voici l'index.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <?php
    require('controler/frontend.php');
     
    try {
        if (isset($_GET['action'])) {
     
    // afficher l'ensemble des chapitres dans ChapterView
            if ($_GET['action'] == 'listPosts') {
                        listPosts();
            }
     
    // afficher le chapitre en entien dans postView
            elseif ($_GET['action'] == 'post') {
                if (isset($_GET['id']) AND $_GET['id'] > 0) {
                    post();
                }
     
                else {
                    throw new Exception('Aucun identifiant de billet envoyé');
                }
            }
     
            elseif ($_GET['action'] == 'addComment') {
            if (isset($_GET['id']) && $_GET['id'] > 0) {
                if (!empty($_POST['com_author']) && !empty($_POST['com_content'])) {
                    addComment($_GET['id'], $_POST['com_author'], $_POST['com_content']);
                }
                else {
                    echo 'Erreur : tous les champs ne sont pas remplis !';
                }
            }
            else {
                echo 'Erreur : aucun identifiant de billet envoyé';
            }
        }
    J'espère que vous pourrez m'aider !
    Merci d'avance !

    Vanessa

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form action="index.php?action=addComment&amp;id=<?= $data['post_id'] ?>" method="post">
     
        <input type="hidden" name="post_id" value="<?php $_GET['post_id'] ?>" >
    c'est un peu confus, non ?
    $data['post_id'], $_GET['post_id'] ???

    Si c'est la même donnée, autant la passer uniquement en post (input hidden).
    sinon... ce n'est pas cliar et ton code manque de commentaires (explications, logique des évènements,...)

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Journaliste - formateur web
    Inscrit en
    Octobre 2017
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Journaliste - formateur web
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2017
    Messages : 35
    Points : 37
    Points
    37
    Par défaut
    Merci jreaux62 ! Je viens de résoudre mon soucis

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. XMLHttpRequest : Impossible de récupérer les données
    Par laurent_ifips dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 22/11/2005, 13h28
  2. [HTML][PHP] Formulaire impossible de récupérer les variables
    Par Pfeffer dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 11/11/2005, 16h08
  3. Réponses: 1
    Dernier message: 05/07/2005, 10h47
  4. [VB6] Ajouter un commentaire à une fonction d'une DLL
    Par Ace303 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 05/06/2003, 08h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo