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 :

la pagination du résultat d'une requête [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut la pagination du résultat d'une requête
    Bonjour,
    j'essai depuis un moment de faire une pagination des résultats d'une requête en vain.
    On m'a dirigé vers un script qui pagine les images mais qui ne correspond pas à ce que je cherche.
    j'aimerai par exemple afficher 10 infos par page et en paquet de 10 c'est à dire :
    les premiers liens:1 2 3 4 5 6 ........10
    quand clique sur 10 on a
    les deuxièmes liens: 10 11 12 13 14 15 .......21
    ainsi de suite.
    je ne sais pas comment faire.
    J'ai récupéré le script suivant qui je crois fait ce que je souhaite .Toutefois les liens sont affichés mais tous les résultats sont sur la première page même quand je clique sur la deuxième j'ai toujours tous les résultats qui ne sont pas divisé en paquet.Je me demande si LIMIT est bien pris en compte.S'il vous plais aidez moi merci.
    Voilà le code:
    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
     
     
    <?
    // Pagination générique d'un listing
     
    function pagine(
       &$sql // Elément commun de requête : "FROM..." auquel sera ajouté le "LIMIT..."
       ,$mpp // Nombre max de lignes par page
       ,$query // Elément de querystring indiquant le n° de page
       ,$url // URL de la page
       ,$long=5 // Nombre max de pages avant et après la page courante
       ) {
       // Pour construire les liens, regarde si $url contient déjà un ?
       $t = (strpos($url,"?"))?"&":"?";
       // Nombre total d'enregistrements retournés
       $res = mysql_query("SELECT count(*) ".$sql);
       $nbres = mysql_result($res,0,0);
       // Calcul du nombre de pages
       $nbpage = ceil($nbres/$mpp);
       // La page courante est
       $p=@$_GET[$query]; if(!$p) $p=1;
       if($p>$nbpage) $p = $nbpage;
       // Longueur de la liste de pages
       $deb = max(1,$p-$long);
       $fin = min($nbpage,$p+$long);
       // Construction de la liste de pages
       $pagine = "";
       if($nbpage>1) {
        for($i=$deb;$i<=$fin;$i++) {
        // Page courante ?
        if($i==$p) $pagine.="<font color=red><strong>&nbsp;".$i."&nbsp;&
    lt;/strong></font>";
        // Page 1 > lien sans query
        elseif($i==1) $pagine.="<A href='".$url."'>&nbsp;".$i."&nbsp;</A
    >";
        // Autre page -> lien avec query
        else $pagine.="<A href='".$url.$t.$query."=".$i."'>&nbsp;".$i.
    "&nbsp;</A>";
        }
        if($pagine) $pagine = "&nbsp;Page".$pagine;
        // Premier, précédent
        if($pagine&&($p>1)) {
        if($p==2) $pagine ="<A href='".$url."'>&nbsp;&lt;&lt;&n
    bsp;</A>".$pagine;
        else $pagine ="<A href='".$url.$t.$query."=".($p-1)."'>&nbsp;&
    amp;lt;&lt;&nbsp;</A>".$pagine;
        if($p>2) $pagine ="<A href='".$url."'>&nbsp;|&lt;&nbsp;<
    ;/A>".$pagine;
        }
        // Suivant, dernier
        if($pagine&&($p<$nbpage)) {
        $pagine.="<A href='".$url.$t.$query."=".($p+1)."'>&nbsp;&
    amp;gt;&gt;&nbsp;</A>";
        if($p<$nbpage-1) $pagine.="<A href='".$url.$t.$query."=".($nbpage)."'>&nbs
    p;&gt;|&nbsp;</A>";
        }
        // Modification de la requête
        $sql .= " LIMIT ".(($p-1)*$mpp).",".$mpp;
       }
       return $pagine;
    }
     
    // Exemple d'appel
     
    $SQL = "FROM matable WHERE champ1='critere' ORDER BY champ2 DESC";
    $pagine = pagine($SQL,20,"p","index.php");
    $res = mysql_query("SELECT * ".$SQL);
     
    echo "<center><table>"; $i=0;
     
    while($val=mysql_fetch_array($res)) { $i++;
     
       echo "<tr class=ligne".($i%2).">
        <td>".$val["champ1"]."</td>
        <td>".$val["champ2"]."</td>
       </tr>";
    }
     
    echo "</table><br />".$pagine."</center><br /><br />";

  2. #2
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    Quel SGBD utilises-tu ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    j'utilise Mysql avec PHP !
    Merci

  4. #4
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    Affiche la requête qu'il construit avec son execution, récupére là et teste la dans phpMyAdmin.

    Verifie si l'url recupére bien la valeur de la page.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    204
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 204
    Par défaut
    j'ai fais exactement ce que vous m'avez conseillé de faire et alors ça marche c'est à dire pour une limit de 1,2 j'ai bien deux enregitrements. Alors qu'en passant par la fonction, j'ai tous les enregistrements.
    La je comprends plus rien je m'était dit qu'il ne comprenait pas "LIMIT" or ce n'est pas le cas.
    peut être vous avez une solution.

  6. #6
    Membre chevronné Avatar de deY!
    Inscrit en
    Avril 2006
    Messages
    403
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2006
    Messages : 403
    Par défaut
    C'est bien la requête que tu recupére en faisaint
    ?

    Si c'est bien ça, le probléme peut être du fait qu'il n'execute pas la bonne requête.
    Peut être devrais-tu changer le nom des variables contenant tes requête par des bien disctinct.

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

Discussions similaires

  1. [SQL] pagination d'un résultat d'une requête
    Par opeo dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 18/03/2007, 11h25
  2. Pagination des résultats d'une requête
    Par dl_jarod dans le forum ASP
    Réponses: 2
    Dernier message: 17/10/2005, 14h30
  3. Résultat d'une requête dans une variable...
    Par Hoegaarden dans le forum Bases de données
    Réponses: 6
    Dernier message: 28/04/2004, 13h51
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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