Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 662 fois - Téléchargée 29 fois
function gestion_pages($d,$l,$lien,$nb_total){ //$d: premier enregistrement affiché //$l: nombre d'enregistrements affichés par page //$lien: lien utilisé pour la page actuelle (attention les parametes $d et $l ne doivent pas etre utilisés) //$nb_total: nombre total d'enregistrements echo '<table width="100%" cellspacing="0" cellpadding="2" border="0"><tr><td width="33%" nowrap align="left" valign ="bottom">'; $debut=$d-$l; if(substr_count($lien,'?')==0) $lien.='?'; else $lien.='&'; if($debut<0) $debut=0; if($d>0){ echo '<a href="'.$lien.'d=0&l='.$l.'">Première page</a>, '; echo '<a href="'.$lien.'d='.$debut.'&l='.$l.'">Page précédente</a>'; } echo '</td><td width="33%" nowrap align="center" valign="bottom">'; echo ceil($nb_total/$l)-ceil(($nb_total-$d)/$l)+1; //affiche le numéro de la page courante echo '/'; echo ceil($nb_total/$l); //affiche le nb total de pages echo '</td><td width="33%" nowrap align="right" valign="bottom">'; $suiv=$d+$l; if($d+$l<$nb_total){ echo '<a href="'.$lien.'d='.$suiv.'&l='.$l.'">Page suivante</a>, '; echo '<a href="'.$lien.'d='.($nb_total-$l).'&l='.$l.'">Dernière page</a>'; } echo '</td></tr></table>'; } if(!isset($_GET[l])) $_GET[l]=20; //pour avoir que 20 enregistrements par page par exemple if(!isset($_GET[d])) $_GET[d]=0; //on affiche en premier l'enregistrement 0 (le premier) par défaut $req=mysql_query("select * from messages limit $_GET[d], $_GET[l];"); //ça c'est la requete de base pour sélectionner ce qu'on va afficher sur la page $nb_total=mysql_num_rows(mysql_query("select * from messages;")); //cette requete sert à compter le nombre d'enregistrement total (pour connaitre le nombre de pages au total) //$req va contenir tous les enregistrement à afficher //libre à vous d'en faire ce que vous voulez ici //un for pour les afficher, ... //c'est ici que vous gérez votre affichage des résultats //et en bas, on appelle ma fonction pour afficher les liens suivant la page ou on se trouve gestion_pages($_GET[d],$_GET[l],$_SERVER['REQUEST_URI'],$nb_total);
28 sept. 2009 à 11:41
http://www.romualb.com/2009/09/27/144/classe_d_affichage_de_listes.html
1 oct. 2007 à 15:54
je voudrais un code premet de faire (Précé [ 1 2 3 4 5 6 7 8 9 ] Suiv)
d'une seul page web
15 mai 2007 à 16:04
Merci pour le code et son optimisation.
J'ai changé une ligne dans le code optimisé de Truemistress.
$html.= ceil($d/$l)+1;//affiche le numéro de la page courante
à la place de :
$html.= ceil($nb_total/$l)-ceil(($nb_total-$d)/$l)+1; //affiche le numéro de la page courante
Bonne Journée
Guss
27 janv. 2007 à 16:22
27 janv. 2007 à 12:21
Par contre, en tenant compte -entre autre- des commentaires postés, je l'ai simplifié et optimisé :
- en remplaçant les '&' par '&'
- en remplaçant les 'nowrap' par 'nowrap="nowrap"'
- en supprimant $lien, par ex : ['.$lien.'d=0&l='.$l.' par ] (cela permet d'avoir une URL qui ne se rallonge pas à chaque action, elle reste constamment du type '?d=xx&l=xx')
- en remplaçant les 'echo' par '&html.= ', ce qui permet de faire un 'return $html;' à la fin de fonction, pour que quand on appelle la fonction ça affiche directement les éléments de navigation, dans n'importe quelle page.
- j'ai remplacé les textes "page suivante", "dernière page" etc.. par des images standards (left_on.gif=une flèche vers la gauche pour le lien "précédente" et 2 flèches vers la gauche pour le lien "première" ; idem avec des fleches vers la droite pour "suivante" et "dernière", avec les textes alternatifs correpondants.
- j'ai rajouté $d = $_GET['d'];
Du coup, cette fonction peut etre copiée et appliquée n'importe où (en changeant juste le nom des images : 'right.on.gif' et 'left_on.gif').
Voici donc la fonction allégée et optimisée que je propose :
function gestion_pages($d,$l,$nb_total){
//$d: premier enregistrement affiché
//$l: nombre d'enregistrements affichés par page
//$nb_total: nombre total d'enregistrements
$html.= '';
$debut=$d-$l;
if($debut<0) $debut=0;
if($d>0)
{
$html.= ' ';
$html.= '';
}
$html.= ', page ';
$html.= ceil($nb_total/$l)-ceil(($nb_total-$d)/$l)+1; //affiche le numéro de la page courante
$html.= '/';
$html.= ceil($nb_total/$l); //affiche le nb total de pages
$html.= ', ';
$suiv=$d+$l;
if($d+$l<$nb_total)
{
$html.= ' ';
$html.= '';
}
$html.= '
';
return $html;
}
//on rajoute ces infos avant sa requete
$d = $_GET['d'];
if(!isset($_GET['l'])) $_GET['l']=4; //pour avoir que 4 enregistrements par page par exemple
if(!isset($_GET['d'])) $_GET['d']=0; //on affiche en premier l'enregistrement 0 (le premier) par défaut
// la requete :
$results = $db->dbQuery("SELECT * FROM nomtable LIMIT ".$_GET['d'].",".$_GET['l']." ");
//appel de la fonction :
$barrenavig = gestion_pages($_GET['d'],$_GET['l'],$nb_total);
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.