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

PHP & Base de données Discussion :

Afficher des commentaires sur un article


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 28
    Points : 11
    Points
    11
    Par défaut Afficher des commentaires sur un article
    bonsoir,

    Je souhaite afficher les commentaires sur un article mais je n’y arrive pas voici mon code php, ma base de donnée est mongodb Merci de bien vouloir m'aider


    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    <?php
    try {
               $connection = new MongoClient();
               $database   = $connection->selectDB('projet');
               $collection = $database->selectCollection('articles');
             } Catch(MongoException $e) {
               die("Failed to connect to database ".$e->getMessage());
    }
             $cursor = $collection->find();
     
           ?>
     
    <?php session_start();
     
    ?>
     
    <html>
     
    <p> this is my article </p>
     
    <p> blablablablablablablablablablablablablablablablablablablablablablablablablabla </p>
     
     <HR width=80% noshade size=4> 
     
     <h3> Add comments </h3>
     
          <?php foreach($article['comments'] as $comment):
                    echo  $comment['name'].' à dit...';?>
                  <p><?php echo $comment['text']; ?></p>
     
     
     
                  <form action="" method="post">
                  <span class="input-label">Name</span>
                       <input type="text" required name="comment_name"
     
                       <br/><br/>
                       <span class="input-label">Email</span>
                       <input type="text" required name="comment_email" 
     
                       <br/><br/>
                       <textarea class="input-label" name="comment" required rows="5" cols="30"></textarea> <br/><br/>
                       <input type="hidden" name="article_id" />
                       <input type="submit" name="btn_submit" value="Save"/>
                     </form>
     
     
     
    <?php
     
     
    function process_comment_if_any_comment_posted ()
    {
       $comment = get_posted_comment_if_any_and_secure();
       if(invalid_or_no_comment($comment)) return;
       insert_comment($comment);
    }
     
    process_comment_if_any_comment_posted();
     
     
     
     
    function get_posted_comment_if_any_and_secure()
    {
      $comment = array();
     
      if(! comment_posted()) return $comment;
     
      $email= check_and_secure($_POST, 'comment_email');
      $name= check_and_secure($_POST, 'comment_name');		
      $text = check_and_secure($_POST, 'comment');
     
      if($text == "") return $comment;
     
      $comment['text'] = $text;
      $comment['comment_name'] = $name;
      $comment['comment_email'] = $email;
     
     
     
     
     
      global $article;
     
      $comment['article'] = $article['_id'];
     
      return $comment;
    }
     
     
     
     
    function invalid_or_no_comment($comment)
    {
      return empty($comment)
        || ! isSet($comment['text'])
        || (trim($comment['text']) == "");
    }
     
     
     
    function insert_comment($comment)
    {
      global $database;
    $database->comments->insert($comment);
      return $comment['_id'];
    }
     
    function get_article()
    {
      $article = array();
     
      return $article;
    }
     
    $article = get_article();
     
    function comment_posted()
    {
       return isSet($_POST['article_id']);
    }
     
     
     
     
    function check_and_secure($T, $field)
    {
      if(! isSet($T[$field])) return "";
      returnhtmlentities($T[$field]);
    }

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par am9511 Voir le message
    ... mais je n’y arrive pas ...
    "mais je n’y arrive pas" n'est pas une raison suffisante, et encore moins un début de piste, pour t'aider.

    D'autant que tu n'as mis aucune explication ni commentaire dans ton code.

    Commence par expliquer ce que tu as fait et essayé, à quoi servent tes fonctions,... et on verra ensuite.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    L'idée : Je voudrais faire un site avec des articles et dans chaque article il y a un formulaire pour poster un commentaire.

    Ce que j'ai fait : j'ai rempli le formulaire, et lorsque j'appuie sur save rien ne s'affiche.
    Par contre voici l'état de ma base de donnée après avoir rempli le formulaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     { "_id" : ObjectId("5528db060faaf2ca03b7acd9"), "text" : "this is my comment", "comment_name" : "anis", "article" : null }
    Je ne comprend pas pourquoi "article" : null.

    Ensuite j'ai essayé d'afficher le commentaire avec ce bout de code mais cela ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($article['comments'] as $comment):
                    echo  $comment['name'].' à dit...';?>
                  <p><?php echo $comment['text']; ?></p>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                       <input type="hidden" name="article_id" />
    Il ne manque rien ?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    Je pense qu'il manque le value,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    value="<?php echo $article['_id'];?>"

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2015
    Messages : 28
    Points : 11
    Points
    11
    Par défaut
    j'ai mis à jour mon code, je n'arrive toujours pas à afficher les commentaires sur la page


    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
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
     
     
    <?php
    try {
               $connection = new MongoClient();
               $database   = $connection->selectDB('projet_DB');
               $collection = $database->selectCollection('articles');
             } Catch(MongoException $e) {
               die("Failed to connect to database ".$e->getMessage());
    }
             $cursor = $collection->find();
     
           ?>
     
    <?php session_start();
     
    ?>
     
    <html>
     
    <p> this is my article </p>
     
    <p> blablablablablablablablablablablablablablablablablablablablablablablablablabla </p>
     
     <HR width=80% noshade size=4> 
     
     <h3> Add comments </h3>
     
            <?php foreach ($cursor as $comment) { 
           ?>
     
       <p> <?php echo $comment['comment_name'].'says...'; ?> </p>
     
      <p> <?php  echo $comment['comment'];  
    }
    ?>
     
     
     
                  <form action="" method="post">
                  <span class="input-label">Name</span>
                       <input type="text" required name="comment_name"
     
                       <br/><br/>
                       <span class="input-label">Email</span>
                       <input type="text" required name="comment_email" 
     
                       <br/><br/>
                       <textarea class="input-label" name="comment" required rows="5" cols="30"></textarea> <br/><br/>
                       <input type="hidden" name="article_id" value="<?php echo $article['_id'];?>" />
                       <input type="submit" name="btn_submit" value="Save"/>
                     </form>
     
     
     
    <?php
     
     
    function process_comment_if_any_comment_posted ()
    {
       $comment = get_posted_comment_if_any_and_secure();
       if(invalid_or_no_comment($comment)) return;
       insert_comment($comment);
    }
     
    process_comment_if_any_comment_posted();
     
     
     
     
    function get_posted_comment_if_any_and_secure()
    {
      $comment = array();
     
      if(! comment_posted()) return $comment;
     
      $email= check_and_secure($_POST, 'comment_email');
      $name= check_and_secure($_POST, 'comment_name');		
      $text = check_and_secure($_POST, 'comment');
     
      if($text == "") return $comment;
     
      $comment['text'] = $text;
      $comment['comment_name'] = $name;
      $comment['comment_email'] = $email;
     
     
     
     
     
      global $article;
     
     
     
      return $comment;
    }
     
     
     
     
    function invalid_or_no_comment($comment)
    {
      return empty($comment)
        || ! isSet($comment['text'])
        || (trim($comment['text']) == "");
    }
     
     
     
    function insert_comment($comment)
    {
      global $database;
    $database->comments->insert($comment);
      return $comment['_id'];
    }
     
    function get_article()
    {
      $article = array();
     
      return $article;
    }
     
    $article = get_article();
     
    function comment_posted()
    {
       return isSet($_POST['article_id']);
    }
     
     
     
     
    function check_and_secure($T, $field)
    {
      if(! isSet($T[$field])) return "";
      return htmlentities($T[$field]);
    }
    l'état de la base de donnée après avoir rempli le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { "_id" : ObjectId("552a5ed30faaf28b04b7acdd"), "text" : "voici le commentaire", "comment_name" : "Anis", "comment_email" : "anis@laposte.net" }

  7. #7
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Tu es en train d'afficher la colonne "comment" : <?php echo $comment['comment']; alors que ta base, la colonne s'appelle visiblement "text" "text" : "voici le commentaire", c'est normal ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/09/2010, 23h40
  2. Réponses: 6
    Dernier message: 15/03/2006, 19h07
  3. Réponses: 2
    Dernier message: 19/12/2005, 20h11
  4. Afficher des images sur une grille
    Par Coussati dans le forum Composants VCL
    Réponses: 3
    Dernier message: 27/10/2005, 09h27

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