Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mettre plusieurs numéros page

    14 décembre 2018 à 9:45:05

    Bonjour,

    Pour commencer dans le contexte, mon  programme est un formulaire connecter a une base MySQL pour afficher les commentaires a la suite du formulaire. Mais le problème est qu'au bout d'un moment, il commence a il y avoir énormement de commentaires donc sa descend très loin dans la page. c'est assez moche. Pour mieux expliquer j'ai fait un schema :

    L'encadrer rouge est l'emplacement du formulaire. Rien à changer ici.

    L'encadrer vert représente les commentaires.Mais au bout d'un moment la colonne risque d'être très longue. Rien a changer ici.

    L'encadrer noir est l'emplacement du nombre d epage. Où l'on peut changer de pages. C'est la que je dois mettre en place un systeme pour que les visiteurs choisise les pages pour voir les commentaires. Et j'aimerai environ 10 commentaires par page.

    Je vous donne les 2 codes important :

    --> minichat.php

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <link rel="stylesheet" href="minichatdesign.css" />
            <title>Mini-chat</title>
        </head>
    
    
        <body>
            <div id="conteneur">
        <div class="element">
        
        <form action="minichat_post.php" method="post">
            <p>
            <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo" id="pseudo" /><br />
            <label for="message">Message</label> :  <input type="text" name="message" id="message" /><br />
    
            <input type="submit" value="Envoyer" />
        </p>
        </form>
    </div>
        <div class="element">
    
    <?php
    // Connexion à la base de données
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    
    // Récupération des 10 derniers messages
    $reponse = $bdd->query('SELECT pseudo, message FROM minichat ORDER BY ID DESC LIMIT 0, 100');
    
    // Affichage de chaque message (toutes les données sont protégées par htmlspecialchars)
    while ($donnees = $reponse->fetch())
    {
        echo '<p><strong>' . htmlspecialchars($donnees['pseudo']) . '</strong> : ' . htmlspecialchars($donnees['message']) . '</p>';
    }
    
    $reponse->closeCursor();
    
    ?>
    </div>
    </div>
        </body>
    </html>


    --> minichatdesign.css

    #conteneur
    {
        display: flex;
        justify-content: center;
        align-items: center;
    }

    Donc si quelqu'un pourrait m'aider sa serait cool car je n'ai pas trouver de tutoriel la dessus. Merci de vos aide !!

    -
    Edité par ThomasOtt1 14 décembre 2018 à 9:47:46

    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2018 à 16:10:05

      Bonjour,

      on appelle ça une pagination ;)

      C'est facilement réalisable en utilisant la clause "LIMIT" à la toute fin de ta requête.

      Parmi les cours présents sur le site, tu trouveras un sujet sur la création d'un livre d'or qui reprend un système de pagination.

      Bon amusement ;)

      -
      Edité par Sister Sadie 14 décembre 2018 à 16:13:01

      • Partager sur Facebook
      • Partager sur Twitter
        14 décembre 2018 à 17:03:39

        Sister Sadie a écrit:

        Bonjour,

        on appelle ça une pagination ;)

        C'est facilement réalisable en utilisant la clause "LIMIT" à la toute fin de ta requête.

        Parmi les cours présents sur le site, tu trouveras un sujet sur la création d'un livre d'or qui reprend un système de pagination.

        Bon amusement ;)

        -
        Edité par Sister Sadie il y a 26 minutes


        Merci mais je n'arrive pas a l'integrer...
        • Partager sur Facebook
        • Partager sur Twitter
          14 décembre 2018 à 18:05:58

          Le principe est celui-ci:

          1°/ grâce à une requête supplémentaire, tu comptes le nombre de messages présents dans ta base données (avec un COUNT par exemple)

          2°/ tu divises le nombre de messages de ta base par le nombre de messages à afficher par page. Par exemple, si tu as 220 messages et que tu veux afficher 10 messages par page : 220 / 10 = 22 (tu arrondis si nécessaire).

          3°/ cela te donne le nombre de pages utiles pour créer tes liens: page 1, page 2,... Jusque page 22 dans notre exemple.

          4°/ sur chaque itération, tu places un lien vers ta page en y ajoutant la page à afficher, par exemple:

          <a href="ta_page_commentaire.php?page=5">Page 5</a>

          5°/ si lorsqu'on atteint ta page, on n'a pas de variable "page" dans l'url (ta_page_commentaire.php) ou si la variable page est égale à 1 (ta_page_commentaire.php?page=1), ta requête devra ressembler à ceci:

          SELECT * FROM ma_table WHERE tes_conditions ORDER BY id DESC LIMIT 0,10 

          6°/ si ta variable est 2 (ta_page_commentaire.php?page=2)

          SELECT * FROM ma_table WHERE tes_conditions ORDER BY id DESC LIMIT 10,20 

          7°/ si ta variable est 3 (ta_page_commentaire.php?page=3)

          SELECT * FROM ma_table WHERE tes_conditions ORDER BY id DESC LIMIT 20,30 

          Et ainsi de suite.

          Tu auras sans doute compris que les derniers chiffres de la requête représentent le début et la fin du nombre d'enregistrements à récupérer dans ta table.

          Voilà qui devrait te guider vers la solution ;)

          • Partager sur Facebook
          • Partager sur Twitter

          Mettre plusieurs numéros page

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown