AFFICHAGE DE RÉSULTATS MYSQL SUR PLUSIEURS PAGES

Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
- - Dernière réponse : cs_romualb
Messages postés
1
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
28 septembre 2009
- 28 sept. 2009 à 11:41
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24689-affichage-de-resultats-mysql-sur-plusieurs-pages

Afficher la suite 
cs_romualb
Messages postés
1
Date d'inscription
mercredi 27 octobre 2004
Statut
Membre
Dernière intervention
28 septembre 2009
-
j'ai développé une classe qui affiche une liste à partir du résultat d'une requête SQL, avec tri, pagination...
http://www.romualb.com/2009/09/27/144/classe_d_affichage_de_listes.html
jimmywydadi
Messages postés
4
Date d'inscription
dimanche 4 février 2007
Statut
Membre
Dernière intervention
15 février 2008
-
bonjour
je voudrais un code premet de faire (Précé [ 1 2 3 4 5 6 7 8 9 ] Suiv)
d'une seul page web
cs_guss
Messages postés
2
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
15 mai 2007
-
Bonjour,

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
eax
Messages postés
728
Date d'inscription
jeudi 20 juin 2002
Statut
Membre
Dernière intervention
7 novembre 2007
-
oui, c vrai que ça le rend un peu plus propre, merci ...
truemistress
Messages postés
1
Date d'inscription
vendredi 26 janvier 2007
Statut
Membre
Dernière intervention
27 janvier 2007
-
Merci pour ce code très utile.

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);