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 :

Pagination en php


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 19
    Points : 9
    Points
    9
    Par défaut Pagination en php
    Bonjour,

    Je cherche à paginer mes résultats par groupes et non par id.

    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
    $messagesParPage=1; //Nous allons afficher 5 messages par page.
     
    //Une connexion SQL doit être ouverte avant cette ligne...
    $retour_total=mysql_query('SELECT COUNT(*) AS total FROM comments'); //Nous récupérons le contenu de la requête dans $retour_total
    $donnees_total=mysql_fetch_assoc($retour_total); //On range retour sous la forme d'un tableau.
    $total=$donnees_total['total']; //On récupère le total pour le placer dans la variable $total.
     
    //Nous allons maintenant compter le nombre de pages.
    $nombreDePages=ceil($total/$messagesParPage);
     
    if(isset($_GET['page'])) // Si la variable $_GET['page'] existe...
    {
         $pageActuelle=intval($_GET['page']);
     
         if($pageActuelle>$nombreDePages) // Si la valeur de $pageActuelle (le numéro de la page) est plus grande que $nombreDePages...
         {
              $pageActuelle=$nombreDePages;
         }
    }
    else // Sinon
    {
         $pageActuelle=1; // La page actuelle est la n°1    
    }
     
    $premiereEntree=($pageActuelle-1)*$messagesParPage; // On calcul la première entrée à lire
     
    $reponse = mysql_query('SELECT AVG(note) AS moyenne, news FROM comments GROUP BY news');
     
    while($donnees_messages=mysql_fetch_assoc($reponse)) // On lit les entrées une à une grâce à une boucle
    {
         //Je vais afficher les messages dans des petits tableaux. C'est à vous d'adapter pour votre design...
         //De plus j'ajoute aussi un nl2br pour prendre en compte les sauts à la ligne dans le message.
         echo '<table width="400" border="0" align="center" cellpadding="0" cellspacing="0">
                    <tr>
                         <td><strong>Ecrit par : '.stripslashes($donnees_messages['moyenne']).'</strong></td>
                    </tr>
                    <tr>
                         <td>'.nl2br(stripslashes($donnees_messages['message'])).'</td>
                    </tr>
                </table><br /><br />';
        //J'ai rajouté des sauts à la ligne pour espacer les messages.   
    }
     
    echo '<p align="center">Page : '; //Pour l'affichage, on centre la liste des pages
    for($i=1; $i<=$nombreDePages; $i++) //On fait notre boucle
    {
         //On va faire notre condition
         if($i==$pageActuelle) //Si il s'agit de la page actuelle...
         {
             echo ' [ '.$i.' ] '; 
         }	
         else //Sinon...
         {
              echo ' <a href="TEST.php?page='.$i.'">'.$i.'</a> ';
         }
    }
    echo '</p>';
    Le but est d'avoir la pagination avec la moyenne des notes affichée, une sur chaque page. Pour l'instant toutes les moyennes sont affichées sur la première page.

    Là, je sèche un peu, c'est pour ça que je poste sur le forum.

    Merci !

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    un système de pagination est basé sur l'utilisation de la clause LIMIT dans la requête. Or chez toi, elle est inexistante.
    Quelque chose dans ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $min = ($page_actuelle - 1) * $nb_msg_page;
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... FROM ... ORDER BY ... LIMIT {$min}, {$nb_msg_page}
    Ensuite c'est pas très clair : ta table comments semble contenir d'une part les commentaires et d'autre part les nouvelles !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = mysql_query('SELECT AVG(note) AS moyenne, news FROM comments GROUP BY news');
    Si c'est le cas, tu devrais les séparer : une table pour les news et un table pour les commentaires.

    Un autre point : tu suis les notes des news ou les notes des commentaires ?

  3. #3
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853

Discussions similaires

  1. pagination en php
    Par rochdi123 dans le forum Langage
    Réponses: 1
    Dernier message: 24/08/2009, 10h07
  2. pagination en php
    Par hadjiphp dans le forum Langage
    Réponses: 9
    Dernier message: 12/06/2009, 10h25
  3. pagination en php
    Par biloute73 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/03/2009, 13h41
  4. Recherche en pagination en PHP
    Par ismonetooo dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 10/10/2008, 16h04
  5. Pagination avec PHP et Mysql
    Par __fabrice dans le forum Flash
    Réponses: 2
    Dernier message: 27/09/2006, 14h17

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