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 :

Améliorer la pagination


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut Améliorer la pagination
    Bonjour.

    J'ai une pagination qui fonctionne mais je voudrais l'améliorer.
    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
    	//*****************************************
    	//	 définition de la pagination
    	//*****************************************
    	$lignesParPage=10;
    	$retour_total = mysql_query("SELECT COUNT(*) AS total FROM titres_proprietaires");
    	$donnees_total = mysql_fetch_assoc($retour_total);
    	$total = $donnees_total['total'];
    	$nombreDePages = ceil($total/$lignesParPage);
    	if(isset($_GET['lapage'])) // Si la variable $_GET['lapage'] existe...
    	{
         		$pageActuelle=intval($_GET['lapage']);
    		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    
    	}
    	$premiereLigne=($pageActuelle-1)*$lignesParPage; // On calcule la première entrée à lire
     
    les lignes de la page
     
    echo "<p align='center'>Page : ";
    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="index.php?page=mes_films&amp;lapage='.$i.'">'.$i.'</a>';
         }
    }
    echo '</p>';
    }
    Je voudrais afficher quelque chose comme ça :
    page : [ 1 ] 2 3 4 5 6 7 8 9 10 suivante

    quand je clique par ex sur la page 7 je voudrais :

    page : précédente [ 7 ] 8 9 10 11 12 13 14 15 16 suivante

    Est ce que quelqu'un peut m'aider ?

    Merci d'avance

  2. #2
    Membre averti Avatar de Huntress
    Femme Profil pro
    Inscrit en
    Août 2004
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 475
    Points : 402
    Points
    402
    Par défaut
    Bonsoir,

    Pour faire évoluer ton code dans ce sens, il faut faire des modifications à partir de cette ligne : for($i=1; $i<=$nombreDePages; $i++)

    Tu dois d'abord déclarer une constante pour déterminer le nombre de numéros que tu souhaites dans ta pagination, donc là visiblement c'est 10.

    Après concernant le for cité plus haut tu ne dois plus boucler sur le nombre de tuples que te retourne ta requête mais sur la constante "nombre de numéros" en prenant une "marge négative avant" (pour le "précédent") si et seulement si la page courante est différente de 1. Et une marge positive après (pour le "suivant") si et seulement si la page courante est différente du nombre total de page.

    Si je ne me trompe pas çà devrait donner un quelque chose comme çà pour la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for($i=-1; $i<=NB_NUMEROS; $i++) {}
    Le if testant si $i est bien la page courante peut rester.

    Par contre je serais toi je mettrais çà sous forme de fonction, il y a de forte chance que tu t'en serves plus d'une fois...

    Règle n°1 du forum francophone : Parler le français...
    Pas de question technique par MP, le forum est fait pour çà, merci.

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/03/2006, 09h28
  2. Réponses: 15
    Dernier message: 20/07/2004, 09h22
  3. [ Eclipse 3 vs 2.1.2] Quelles sont les améliorations ?
    Par geegee dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 26/05/2004, 16h55

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