Aide pour une pagination (SQL/PHP)
Fermé
frugi
Messages postés
53
Date d'inscription
lundi 22 décembre 2008
Statut
Membre
Dernière intervention
26 janvier 2016
-
22 août 2012 à 16:37
opda - 25 août 2012 à 03:09
opda - 25 août 2012 à 03:09
A voir également:
- Aide pour une pagination (SQL/PHP)
- Easy php - Télécharger - Divers Web & Internet
- Récupération serveur sql - Télécharger - Gestion de données
- Php natif - Forum PHP
- Comment arrêter la pagination à une certaine page - Forum Word
- Pagination google doc a partir de la page 3 ✓ - Forum Bureautique
1 réponse
En effet ce n'est pas du côté du client ou de html que vous pouvez faire ça.
Votre programme marche déjà sans pagination? Ce serait une bonne base.
Donc en gros, il me faudrait ce code php et des précisions sur le SQL...
La pagination comme vous dites ce sont les régions répétées.
Pour faire simple: Vous voulez 10 résultats/page il vous faut plusieurs variables pour pouvoir afficher chaque page:
Le nombre de résultat total, le nombre de résultat par page(10 dans notre cas mais vous avez probablement déjà vu un site avec:"AFFICHER 'n' résultats par page 'n' correspond au nombre de résultats à afficher, ça peut permettre plus de souplesse pour l'utilisateur d'y penser au début).
Le nombre de pages est obtenu par n/total donc ce n'est pas une variable mais il sert lorsque qu'il n'y a plus de page suivante (page des derniers résultats) où qu'il n'y a pas de résultat précédent(1ère page) auquel cas il faut faire un boucle conditionnelle(IF) pour afficher ou non les boutons pages suivante/précédente.
Ces boutons sont des formulaires PHP en GET ou POST(je conseille GET dans un 1er temps).
Pour le SQL, c'est à dire la requête il vous suffit de mettre l'instruction LIMIT en utilisant les valeurs, vous pouvez faire un ORDER BY pour avoir une cohérence dans l'affichage(alphabétique, par date etc...suivant la structure de vos tables).
exemple de requête avec LIMIT:
SELECT * FROM table WHERE <condition> LIMIT 20,30
donneras les résultats 20 à 30 correpsondant à la clause WHERE(les résultats sont classés dans l'ordre d'insertion).
Avec un ORDER BY
SELECT * FROM table WHERE <condition> LIMIT 20,30 ORDER BY date
Même chose mais les résultats sont classés de 1 à l'infini sur le champ date de la table concerné(s'il existe).
Donc pour avoir vos régions répétées il vous faut établir la requête, le critère WHERE(qui est facultatif mais bon selon la structure de vos tables il peut y avoir des tris à faire) et remplacer 20,30 de mon exemple par les variables PHP envoyées par le bouton formulaire et correspondante au résultat de l'affichage précédent et suivant:
Pour le cas de la page suivante:
SELECT * FROM table WHERE <condition>
LIMIT [dernière image de la page précédente]+1,[dernière image de la page précédente]+11
a contrario page précédente
SELECT * FROM table WHERE <condition>
LIMIT [première image de la page précédente]-11,[première image de la page précédente]-1
[image]+1 ou [image]+11 ou [image]-11 etc... sont bien entendus des variables php.
Bref voici pour le principe, en farfouillant le web (google est votre ami) vous aurez certainement un exemple et cours concret là dessus.
edit: région répété porte bien son nom, puisque que c'est l'intervalle de la zone sur laquelle porte votre requête. Sur 100 résultats vous aurez 10 régions répétés si vous voulez un intervalle de 10, l'affichage n'est qu'un détail annexe puisque c'est toujours le même, seul va changer la région répétée qui fournit le résultat à afficher.
Vous devez comprendre à présent toute la puissance des pages web dynamique, tout fonctionne de façon identique en web dynamique:
une seule page HTML/CSS permet d'afficher une infinité de résultat, avec les régions répétées c'est un peu contraignant parce qu'il y a de l'événementiel à la base: l'utilisateur sélectionne la page précédente/suivante/page/numéro sur total des pages , éventuellement le nombre de résultats qu'il affiche par page(remplacez +11 de mon exemple par 'n'+1 ) et ceci pour des années avec un code php et une base adéquate(la conception/structure importante, plus que le langage)
Votre programme marche déjà sans pagination? Ce serait une bonne base.
Donc en gros, il me faudrait ce code php et des précisions sur le SQL...
La pagination comme vous dites ce sont les régions répétées.
Pour faire simple: Vous voulez 10 résultats/page il vous faut plusieurs variables pour pouvoir afficher chaque page:
Le nombre de résultat total, le nombre de résultat par page(10 dans notre cas mais vous avez probablement déjà vu un site avec:"AFFICHER 'n' résultats par page 'n' correspond au nombre de résultats à afficher, ça peut permettre plus de souplesse pour l'utilisateur d'y penser au début).
Le nombre de pages est obtenu par n/total donc ce n'est pas une variable mais il sert lorsque qu'il n'y a plus de page suivante (page des derniers résultats) où qu'il n'y a pas de résultat précédent(1ère page) auquel cas il faut faire un boucle conditionnelle(IF) pour afficher ou non les boutons pages suivante/précédente.
Ces boutons sont des formulaires PHP en GET ou POST(je conseille GET dans un 1er temps).
Pour le SQL, c'est à dire la requête il vous suffit de mettre l'instruction LIMIT en utilisant les valeurs, vous pouvez faire un ORDER BY pour avoir une cohérence dans l'affichage(alphabétique, par date etc...suivant la structure de vos tables).
exemple de requête avec LIMIT:
SELECT * FROM table WHERE <condition> LIMIT 20,30
donneras les résultats 20 à 30 correpsondant à la clause WHERE(les résultats sont classés dans l'ordre d'insertion).
Avec un ORDER BY
SELECT * FROM table WHERE <condition> LIMIT 20,30 ORDER BY date
Même chose mais les résultats sont classés de 1 à l'infini sur le champ date de la table concerné(s'il existe).
Donc pour avoir vos régions répétées il vous faut établir la requête, le critère WHERE(qui est facultatif mais bon selon la structure de vos tables il peut y avoir des tris à faire) et remplacer 20,30 de mon exemple par les variables PHP envoyées par le bouton formulaire et correspondante au résultat de l'affichage précédent et suivant:
Pour le cas de la page suivante:
SELECT * FROM table WHERE <condition>
LIMIT [dernière image de la page précédente]+1,[dernière image de la page précédente]+11
a contrario page précédente
SELECT * FROM table WHERE <condition>
LIMIT [première image de la page précédente]-11,[première image de la page précédente]-1
[image]+1 ou [image]+11 ou [image]-11 etc... sont bien entendus des variables php.
Bref voici pour le principe, en farfouillant le web (google est votre ami) vous aurez certainement un exemple et cours concret là dessus.
edit: région répété porte bien son nom, puisque que c'est l'intervalle de la zone sur laquelle porte votre requête. Sur 100 résultats vous aurez 10 régions répétés si vous voulez un intervalle de 10, l'affichage n'est qu'un détail annexe puisque c'est toujours le même, seul va changer la région répétée qui fournit le résultat à afficher.
Vous devez comprendre à présent toute la puissance des pages web dynamique, tout fonctionne de façon identique en web dynamique:
une seule page HTML/CSS permet d'afficher une infinité de résultat, avec les régions répétées c'est un peu contraignant parce qu'il y a de l'événementiel à la base: l'utilisateur sélectionne la page précédente/suivante/page/numéro sur total des pages , éventuellement le nombre de résultats qu'il affiche par page(remplacez +11 de mon exemple par 'n'+1 ) et ceci pour des années avec un code php et une base adéquate(la conception/structure importante, plus que le langage)
25 août 2012 à 03:09
Rien à voir avec ce que vous voulez faire. Il vous faut des formulaires avec champ hidden(un bouton quoi) pour la partie navigation et php qui va construire la requête SQL à envoyer à la base.
Donc oubliez javascript , html et css(l'affichage) et concentrez vous sur les données(obtenir l'intervalle d'une page ce sera toujours le même pour toute les page puisque c'est une variable).