jdeheyn
Messages postés23Date d'inscriptionvendredi 14 avril 2006StatutMembreDernière intervention14 janvier 2010 1 nov. 2010 à 00:13
J'aurai tendance à dire qu'il y a un problème dans le cas où le paramètre '$url_rewriting' de cette fonction est à 'true' : dans ce cas là la valeur '$current_page' n'est pas récupérée.
Quelque soit l'option '$url_rewriting', on obtient toujours '$current_page'. Et l'affichage de la pagination se fait correctement (page en cours en gras).
montalling
Messages postés1Date d'inscriptionjeudi 18 octobre 2007StatutMembreDernière intervention24 décembre 2009 24 déc. 2009 à 23:14
bonsoir
je suis débutant en php et html ...merci pour le poste
je voudrez savoir ou je place ce code php et comment l'intégrer dans ma page web et est ce que je met le code dans tout mes autre pages ?
merci
niz91
Messages postés2Date d'inscriptionlundi 21 juillet 2008StatutMembreDernière intervention24 février 2009 4 avril 2009 à 01:13
Bonjour, dabord merci pour ce script.
voila, j'ai un probleme. j'affiche des articles contenus dans ma BDD.
ces articles sont 3, le probleme c'est qu'a chaque page il m'affiche mes 3 articles et moi je voudrais qu'il n'y en ai qu'un par page.
j'utilise un mysql fetch array dans la boucle for ($i = 1; $i <= 10000; $i++) mais je ne sait pas comment l'adapter
Merci de m'eclairer
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 15 déc. 2006 à 17:11
"notre cher Windaube". Encore un commentaire constructif inutile.. surtout que tu as développé du code pour win32 et que tu dois tourner dessus certainement.
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 15 déc. 2006 à 17:07
Malalam > forcement... lol
Maintenant je capte ^^
Merci ;-)
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 13 déc. 2006 à 11:29
Wouhou j'ai des commentaireuhs >.< (merci d'ailleurs :p).
Je voulais savoir si je transformais cette fonction en class cela intéresserai ?
Et puis si vous avez des remarques a faire je les prends volontiers ! =o
@++
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 12 déc. 2006 à 13:10
Jean84 => ça sert à paginer... ;-)
Imagine un catalogue : tu as 100 références. TU veux afficher ton catalogue, mais pas les 100 références sur la même page, ça ferait beaucoup.
Mettons que tu en veuilles 20 par pages, et donc, tu auras 5 pages.
La pagination, c'est ça : limiter un jeu de résultat pour un affichage sur plusieurs pages.
cs_jean84
Messages postés449Date d'inscriptionjeudi 26 août 2004StatutMembreDernière intervention 5 mars 2009 12 déc. 2006 à 13:04
Question un peu stupide (venant de ma part sa ne surprendra personne ^^) : heu, c'est quoi une fonction de pagination ?
Parce que j'imagine que ce n'est pas la meme chose qu'un fichier swap ou le bon vieux pagefile.sys de notre cher Windaube ?
Et en quoi l'url_rewriting est utile la dedans ?
Petit commentaire sur le code : j'ai pas tout regarder mais pour un premier code, c'est bien presenter (fonction bien documentee) et optimisation du code utilise a bon escient. Bravo ne serait-ce que pour sa, on voit que tu as fait un effort (c'est pas touours le cas malheureusement....)
@++
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 7 déc. 2006 à 16:20
Encore une fois, ce que tu dis n'est valable QUE pour mysql (enfin, pas QUE...mais bcp de bases de données n'ont pas de clause LIMIT).
Et mysql n'est pas la seule base de données au monde, loin s'en faut...
De plus, ce n'est pas vrai si on l'utilise conjointement avec un ORDER BY sur un champ non indexé, par exemple. Il faut bien comprendre comment marche généralement LIMIT...dans bien des cas, mysql est obligé de sélectionner toute la table comme si LIMIT n'y était pas, de trier comme demandé (si demandé...), puis de virer tout ce qui est en dehors du LIMIT.
FlUxIuS
Messages postés4Date d'inscriptionmercredi 28 décembre 2005StatutMembreDernière intervention 7 décembre 2006 7 déc. 2006 à 15:49
:) Orf ouep mais l'idée et d'utiliser les requetes de façons judicieuses quand on travail avec une base de donnée.
Il faut aussi savoir que avec LIMIT par exemple, la requete ne renvera que 30 resultats à partir de la ligne 0 (exemple) ce qui alégera beaucoup le tout.
:)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 6 déc. 2006 à 18:09
Hello,
certes...quand on bosse avec mysql.
Et avec mssql ? postgre? ou autre ? OU sans base de données, avec un tableau comme l'exemple ici ? Ou sur un fichier ? etc etc...
L'avantage de cette technique est qu'elle est à peu près générique.
Ceci dit, côté rapidité, LIMIT n'est pas un foudre de guerre, comme clause...
FlUxIuS
Messages postés4Date d'inscriptionmercredi 28 décembre 2005StatutMembreDernière intervention 7 décembre 2006 6 déc. 2006 à 17:37
Ce genre de pagination est une technique :) mais le problème c'est que l'on perd un peu de temps à l'interprétation du code puis au calcul de la requête enfin pour dire que personelement le meilleur mode d'affichage c'est d'utiliser LIMIT 54 , 30
:) ou 54 est la ligne et 30 l'affichage de resultat enfin c'est ce que je ferais pour de la pagination car réelement c'est plus court à écrire et c'est plus optimisé ;)
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 17:29
Pas de soucis l'amis :)
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 30 nov. 2006 à 17:21
C'est pas qu'une classe me branche pas... mais j'veux vraiment qu'elle reste simple (et pis je sais pas vraiment c'est quoi l'héritage en fait >.<), je regarderais pour réglé le problème que tu m'as dis, merci pour les conseils :)
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 17:10
Il est plus convivial je pense de faire ça avec une classe, qui permettrai donc d'utiliser SQL en brut. De même tu pourrai ensuite la réutiliser avec de l'héritage par exemple. M'enfin le code reste sympa :=)
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 30 nov. 2006 à 17:07
Bon bah oké =x une suggestion pour réglé le problème ? =o
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 17:04
Nan :)
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 30 nov. 2006 à 16:54
Bah heu... XD
Quand on fait un LIMIT de l'enregistrement $pagination['start_page'] (1 on va dire) jusqu'à l'enregistrement $pagination['data_per_page'] (du genre 30) donc avec la requête SELECT blabla FROM ici LIMIT 1, 30 on retourne les résultat de 1 jusqu'à 30 donc j'vois pas en quoi cela parcours tout les résultats... par contre dans mon exemple avec le array oui ok la ça parcours bien tout les résultats car j'utilise la fonction array_slice mais j'ai mis ça a titre d'exemple >.<
Enfin... j'espere que j'dis pas trop de conneries la =x
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 16:43
Oui. Le problème que je voulai que te faire remarquer vient du fait que ta fonction parcours tous les résultats alors qu'ils ne sont pas tous utilisés.
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 30 nov. 2006 à 14:15
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 14:00
Au final non :)
En relissant, je me rend compte que le traitement va par exemple éxécuter X fois la fonction (pour la bonne pagination) et selectionner admétons 10.000 enregistrement pour n'en utiliser que 10. Le fait qu'il manque le LIMIT de SQL est responsable de cela. Pour un site à fort traffic, si par exemple x personnes demandent en même temps l'accés à la base, le serveur montera en charge.
mrjulien
Messages postés38Date d'inscriptionvendredi 15 octobre 2004StatutMembreDernière intervention28 novembre 2007 30 nov. 2006 à 13:43
Salut.
Le code est compact et puissant. Perso j'accroche.
Bravo.
cs_NainPuissant
Messages postés12Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention26 septembre 2007 30 nov. 2006 à 12:10
hey psssst... j'voudrais bien un ou deux (ou pleins d'autres XD) commentaire(s) au minimum pour savoir si la fonction est bien/pas bien, pour pouvoir me corriger et tout et tout...
1 nov. 2010 à 00:13
Je propose donc de changer la ligne 12 :
$current_page = !empty($_GET[$var_page]) && is_numeric($_GET[$var_page]) && $_GET[$var_page] < $nb_pages + 1 ? $_GET[$var_page] : 1;
par le code suivant :
if ($url_rewriting)
{
$url_detaillee = explode("/", $_SERVER["REQUEST_URI"]);
$current_page = !empty($url_detaillee[count($url_detaillee)-1]) && is_numeric($url_detaillee[count($url_detaillee)-1]) && $url_detaillee[count($url_detaillee)-1] < $nb_pages + 1 ? $url_detaillee[count($url_detaillee)-1] : 1;
}
else $current_page = !empty($_GET[$var_page]) && is_numeric($_GET[$var_page]) && $_GET[$var_page] < $nb_pages + 1 ? $_GET[$var_page] : 1;
Quelque soit l'option '$url_rewriting', on obtient toujours '$current_page'. Et l'affichage de la pagination se fait correctement (page en cours en gras).
24 déc. 2009 à 23:14
je suis débutant en php et html ...merci pour le poste
je voudrez savoir ou je place ce code php et comment l'intégrer dans ma page web et est ce que je met le code dans tout mes autre pages ?
merci
4 avril 2009 à 01:13
voila, j'ai un probleme. j'affiche des articles contenus dans ma BDD.
ces articles sont 3, le probleme c'est qu'a chaque page il m'affiche mes 3 articles et moi je voudrais qu'il n'y en ai qu'un par page.
j'utilise un mysql fetch array dans la boucle for ($i = 1; $i <= 10000; $i++) mais je ne sait pas comment l'adapter
Merci de m'eclairer
15 déc. 2006 à 17:11
15 déc. 2006 à 17:07
Maintenant je capte ^^
Merci ;-)
13 déc. 2006 à 11:29
Je voulais savoir si je transformais cette fonction en class cela intéresserai ?
Et puis si vous avez des remarques a faire je les prends volontiers ! =o
@++
12 déc. 2006 à 13:10
Imagine un catalogue : tu as 100 références. TU veux afficher ton catalogue, mais pas les 100 références sur la même page, ça ferait beaucoup.
Mettons que tu en veuilles 20 par pages, et donc, tu auras 5 pages.
La pagination, c'est ça : limiter un jeu de résultat pour un affichage sur plusieurs pages.
12 déc. 2006 à 13:04
Parce que j'imagine que ce n'est pas la meme chose qu'un fichier swap ou le bon vieux pagefile.sys de notre cher Windaube ?
Et en quoi l'url_rewriting est utile la dedans ?
Petit commentaire sur le code : j'ai pas tout regarder mais pour un premier code, c'est bien presenter (fonction bien documentee) et optimisation du code utilise a bon escient. Bravo ne serait-ce que pour sa, on voit que tu as fait un effort (c'est pas touours le cas malheureusement....)
@++
7 déc. 2006 à 16:20
Et mysql n'est pas la seule base de données au monde, loin s'en faut...
De plus, ce n'est pas vrai si on l'utilise conjointement avec un ORDER BY sur un champ non indexé, par exemple. Il faut bien comprendre comment marche généralement LIMIT...dans bien des cas, mysql est obligé de sélectionner toute la table comme si LIMIT n'y était pas, de trier comme demandé (si demandé...), puis de virer tout ce qui est en dehors du LIMIT.
7 déc. 2006 à 15:49
Il faut aussi savoir que avec LIMIT par exemple, la requete ne renvera que 30 resultats à partir de la ligne 0 (exemple) ce qui alégera beaucoup le tout.
:)
6 déc. 2006 à 18:09
certes...quand on bosse avec mysql.
Et avec mssql ? postgre? ou autre ? OU sans base de données, avec un tableau comme l'exemple ici ? Ou sur un fichier ? etc etc...
L'avantage de cette technique est qu'elle est à peu près générique.
Ceci dit, côté rapidité, LIMIT n'est pas un foudre de guerre, comme clause...
6 déc. 2006 à 17:37
:) ou 54 est la ligne et 30 l'affichage de resultat enfin c'est ce que je ferais pour de la pagination car réelement c'est plus court à écrire et c'est plus optimisé ;)
30 nov. 2006 à 17:29
30 nov. 2006 à 17:21
30 nov. 2006 à 17:10
30 nov. 2006 à 17:07
30 nov. 2006 à 17:04
30 nov. 2006 à 16:54
Quand on fait un LIMIT de l'enregistrement $pagination['start_page'] (1 on va dire) jusqu'à l'enregistrement $pagination['data_per_page'] (du genre 30) donc avec la requête SELECT blabla FROM ici LIMIT 1, 30 on retourne les résultat de 1 jusqu'à 30 donc j'vois pas en quoi cela parcours tout les résultats... par contre dans mon exemple avec le array oui ok la ça parcours bien tout les résultats car j'utilise la fonction array_slice mais j'ai mis ça a titre d'exemple >.<
Enfin... j'espere que j'dis pas trop de conneries la =x
30 nov. 2006 à 16:43
30 nov. 2006 à 14:15
Pour le LIMIT de SQL, il suffit de faire ceci :
$query = 'SELECT id, content FROM news LIMIT ' . $pagination['start_page'] . ', ' . $pagination['data_per_page'];
Enfin comme avec le array_slice non ?
30 nov. 2006 à 14:00
En relissant, je me rend compte que le traitement va par exemple éxécuter X fois la fonction (pour la bonne pagination) et selectionner admétons 10.000 enregistrement pour n'en utiliser que 10. Le fait qu'il manque le LIMIT de SQL est responsable de cela. Pour un site à fort traffic, si par exemple x personnes demandent en même temps l'accés à la base, le serveur montera en charge.
30 nov. 2006 à 13:43
Le code est compact et puissant. Perso j'accroche.
Bravo.
30 nov. 2006 à 12:10