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);
cs_aminix9
Messages postés
96
Date d'inscription
mercredi 2 juin 2004
Statut
Membre
Dernière intervention
9 février 2010
-
je n ai pa de commentaire mais je tiens à te remercier car ça m a aidé bcp .
j ai pris ta fonction et j ai rempli les champs vides et ça marche .
merci encore une fois ;-)
derfum
Messages postés
45
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
5 septembre 2004
-
En réponse à GRenard :

En bon citoyen, j'indique quand même en premier lien une traduction officielle du W3C (malgré tout compréhensible) : http://www.la-grange.net/w3c/xhtml1/
Pour ce qui est des standards du web, voilà un site référence à posséder dans tous bons favoris (ou signets, ou marques-pages...) : http://www.openweb.eu.org (et c'est en français)
Et plus particulièrement voilà 4 articles à lire :
http://www.openweb.eu.org/articles/html_au_xhtml/
http://www.openweb.eu.org/articles/differentes_dtd/
http://www.openweb.eu.org/articles/respecter_semantique/
http://www.openweb.eu.org/articles/caracteres_illegaux/

Ceci permettra d'approfondir; mais en quelques mots voilà ce qu'il faut retenir du XHTML :
- Les déclarations de documents sont importants
- Le XHTML (n'étant qu'une DTD du XML) est avant tout un langage sémantique, c'est-à-dire d'organisation de concepts, pas de présentation (comme l'était HTML 3.2/4.0). Il faut donc séparer le fond de la forme, c'est pour ça que tous les outils de présentation (balises font, center, u, i, b, s ; attributs align, cell*...) sont dépréciés (et même illégale pour le XHTML strict) et à remplacer par du CSS. De plus, les balises peu utilisées en HTML (blockquote, dd, dt, strong, em) ne sont pas juste des alias de pre, ul, li, b, i mais bien porteuses d'un concept diffèrent à utiliser à bon escient.
- L'emboîtement correct des balises est exigé
- Toutes les balises se ferment (même

,
, ...)
- Les URLs sont encodées (&)
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
oui il y a www.openweb.eu.org qui est pas mal ;-)
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Je ne suis pas encore assez xhtml, je devrais m'y mettre bientot lorsque j'airai du temps ! mais c'est quelque chose que je dois apprendre :) Si tu connais une place ou tous les standards sont bien écrit et pas perdu dans la masse je suis prèt à tout lire :) (j'espere qu'il y a autre chose que wc3 :P)
derfum
Messages postés
45
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
5 septembre 2004
-
On veut jouer les lourds sur les standards ? ^_^ alors :

* cellspacing="0" cellpadding="2" border="0"
* align="center" valign="bottom"
--> Deprecié : préférez les feuilles de style

* nowrap
--> Erreur ! remplacer par nowrap="nowrap" (les raccourcis sont interdits en xhtml, comme selected, checked, disable, ismap, nowrap...)

FReD
cs_Anthomicro
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8 -
"je vois que tu es quand même avancé en php, tu pourrais commencer à te fier aux standards... ceux de php on dirait que tu les maitrises alors pourquoi ne pas essayer ceux des commentaires de fonction"

et XHTML par la même occasion ;-) (par exemple le & dans les urls il faut le remplacer par &

a +
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Tu devrais essayer de ne pas passer une variable superglobale dans la fonction puisque dans celle ci tu peux y accèder dans la fonction directement...
Je comprends que tu fais cela parce que tu veux garder tes paramètres passé en _GET
Alors encore mieux et plus amusant à faire (mouarf je l'ai fait mais je vais te laisser chercher vu que tu m'as l'air un bon petit codeur ;))
C'est de ne pas passer le lien du tout ni le mettre dans le a href, mais de commencer directement le lien par
?d= (par exemple) et de rajouter à la fin &".$query."

$query pouvant être $_SERVER['QUERY_STRING'] SANS les variables $d et et $l bien sur (ya un peu de ereg à faire la dedans ;))

2ieme critique
Normalement, une fonction, permet soit d'alléger le code ou l'on est présentement, (genre appeler une fonction qui va afficher beaucoup de chose (avec echo)), ou encore, ca sert au lieu de se répeter 50 fois, et l'autre c'est d'afficher un module...
Ta fonction devrait etre un "module" qui devrait fonctionner sur n'importe quel site. Le seul problème c'est que tu fais pleins de echo de tableau... Moi si je veux ta fonction je dois enlever ces echo et ne garder que les echo des links... (ou encore mieux, faire un return ...)
Donc en fait ce que je te propose de faire, c'est de faire la fonction le plus modulaire possible pour que n'importe qui puisse prendre la fonction avec directement copier coller sans rien modifier à l'intérieur !
(Ca c'est trop fort quand ca arrive :P)

3ieme critique,
je vois que tu es quand même avancé en php, tu pourrais commencer à te fier aux standards... ceux de php on dirait que tu les maitrises alors pourquoi ne pas essayer ceux des commentaires de fonction ;)
/**
* @return void
* @param int $l
* @desc Une petite description
*/


Bonne Chance !