PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-04-2018 22:06:29

ricem
Membre
Inscription : 14-04-2018
Messages : 2

Afficher le nombre de commentaires avec une pagination.

Bonsoir,

J'ai un petit souci lors de la création de pagination, je n'arrive pas afficher les message demandés, le problème est quand je je met les limites dans mon code.
Là ça s'affiche, mais pas le nombre demandé exemple j'ai 9 commentaires dans ce billet il m'affiche les 9, je vous mets le code:

// Récupération des commentaires
      $req = $bdd->prepare('SELECT pseudo, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%i \') AS date_commentaire FROM commentaires WHERE id_billet = ? ORDER BY ID ');
      $req->execute(array($LID));
      while ($donnees = $req->fetch())

et quand je met ce même code avec les LIMIT, il m'affiche plus rien, sinon coté pagination tous fonctionne correctement si je lui demande 3 com/page, il m'affiche 3 pages, 3*3=9 commentaire que j'ai smile je vous mets le code:

// Récupération des commentaires
      $req = $bdd->prepare('SELECT pseudo, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%i \') AS date_commentaire FROM commentaires WHERE id_billet = ? ORDER BY ID DESC LIMIT (?, ?) ');
      $req->execute(array($LID, $pagestart, $msgpage));
      while ($donnees = $req->fetch())

Et au cas où le code compet :


<section>
    <div class="findepage">

      <?php

      require "#require/connet_bdd.php"; //Connexion à la base de données

      if (isset($_GET['billet']))
      {

      // Le nombre de messages qui sera affichés par page
        $msgpage = 4;
       
        // On récupère le nombre de message total qui sont dans la base de données
               
        if (isset($_GET ['billet']))
        {
            $LID = $_GET ['billet'];
        }
        else
        {
            $LID = "xx";
        }

        $req = $bdd->query('SELECT COUNT(*) FROM commentaires WHERE id_billet = ' . $LID );
        $msgtotal = $req->fetchColumn();
       
        // Nombre de page total est égal à (nombre de message total divisé par le nombre de message par page)
        $nbrpage = ceil($msgtotal/$msgpage); //ceil arrondie au chiffre supérieur

        // Si aucune page n'est choisie alors la page par défaut est la première
        if(isset($_GET['page']) AND !empty($_GET['page']) AND $_GET['page'] >0 AND $_GET['page'] <= $nbrpage)
        {
          $_GET['page'] = intval($_GET['page']);
          $page = $_GET['page'];
        }
        else
        {
          $page = 1;
        }
       
        // page de départ qui servira pour la requête "desc & limit"
        $pagestart = ($page-1)*$msgpage;

     
     
        // Récupération du billet
        $req = $bdd->prepare('SELECT id, titre, contenu, DATE_FORMAT(date_creation, \'%d/%m/%Y à %Hh%i \') AS date_creation FROM billet WHERE id = ?');
        $req->execute(array($LID));
        $donnees = $req->fetch();
     
      {
      ?>
      <!-- Affichage du billet -->
     
      <div class="insides">
        <div class="block_titre"> <!-- On affiche le titre et la date de création du billet -->
          <?php echo '<span class="titre_forum">' . htmlspecialchars($donnees['titre']) . '</span> <p class="date_forum"> Posté le ' . $donnees['date_creation'] . '</p> ' ; ?>
        </div>

        <p class="contenu_forum">
          <?php echo nl2br (htmlspecialchars($donnees['contenu'])) ; ?>  <!-- On affiche le contenu du billet -->
        </p>     
      </div>
       
      <?php
      }

      $req->closeCursor(); // Important : on libère le curseur pour la prochaine requête

      // Récupération des commentaires
      $req = $bdd->prepare('SELECT id_billet, pseudo, commentaire, DATE_FORMAT(date_commentaire, \'%d/%m/%Y à %Hh%i \') AS date_commentaire FROM commentaires WHERE id_billet = ? ORDER BY ID DESC LIMIT ?, ? ');
      $req->execute(array($LID, $pagestart, $msgpage));
      while ($donnees = $req->fetch())

      {
      ?>
     
      <!-- Affichage des commentaires -->
      <div class="commentaire">
       
        <p class="line"> Posté le <?php echo $donnees['date_commentaire']; ?> par <b><?php echo htmlspecialchars($donnees['pseudo']); ?></b>.<br/>
        <span style="color: blue"><?php echo nl2br(htmlspecialchars($donnees['commentaire'])); ?> </span> </p>
     
      </div> 
     
      <!-- Fin de la boucle des commentaires -->
     
      <?php
      }

      $req->closeCursor();
     
      {
      ?> 
     
      <form class="sujet" action="commentaire_traitement.php" method="post">
        <input class="form" type="text" name="pseudo" id="pseudo" placeholder="Votre pseudo" title="Les caractères spéciaux ne sont pas autorisé, merci"  />
        <input type="submit" class="form2" style="" value="Envoyer" /><br/>
        <textarea class="form" name="commentaire" placeholder="Éditer le commentaire ici, vous pouvez étirer le bloc verticalement en vous plaçant sur le coin en bas à droite." ></textarea>
        <input type="hidden" name="id_billet" value="<?php echo $_GET['billet']; ?>" />
      </form>
      <span class="line"><i>* Vous devez remplir tout les champs, votre pseudo ne doit pas comporter de caractères spéciaux, ni d'espace, de même le pseudo doit contenir entre 3 et 12 caractères.
      Si ceci n'est pas respecté, les données ne seront pas envoyé.</i></span>
     
      <?php
      }
     
      echo '</div>'; // fermeture de "findepage"
         
      echo '<div id="pagination">'; //Pour l'affichage, on centre la liste
       
        if ($page > 1)
        {
          echo '<a class="lien" href="?page=' . ($page - 1) . '"> << </a>';
        }
         
        for ($i = 1; $i <= $nbrpage; $i++)
        {
          if ($i == $page)     
          {
            echo '<span class="sanslien">' .$i. '</span> ';
          }
             
          else
          {
            echo ' <a  class="lien" href="?page=' . $i . '"> ' . $i . '</a>';
          }
        }
         
        if ($page < $nbrpage)
        {
          echo '<a class="lien" href="?page=' . ($page + 1) . '"> >> </a>';
        }

      }
     
      else
      {
        echo 'Vous essayez d\'atteindre une page qui n\'existe pas...!!!';
      }

      echo '</div>'; // fermeture de "pagination"

      ?>
   
  </section>
 

Merci.

Dernière modification par ricem (14-04-2018 22:07:16)

Hors ligne

#2 15-04-2018 09:26:07

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : Afficher le nombre de commentaires avec une pagination.

Salut
C'est quoi la valeur de $pagestart et $msgpage ??

c'est $pasgeend qu'il faudrait wink

a++

Hors ligne

#3 15-04-2018 13:46:56

ricem
Membre
Inscription : 14-04-2018
Messages : 2

Re : Afficher le nombre de commentaires avec une pagination.

Heu, mouais, la variable

// Le nombre de messages qui sera affichés par page
        $msgpage = 4;

Le nom à rien à voir, puisque c'est moi qui la créer, on lui donne le nom que l'on veut ?? qu'elle s’appelle pierre ou cailloux ce qui compte c'est ce qu'elle fait non ??

Hors ligne

Pied de page des forums