[RESOLU] Pagination POO et structure MVC

Eléphant du PHP | 417 Messages

20 févr. 2013, 12:03

Bonjour,

je suis un peu perdu, pour ajouter une pagination a une page ou j'affiches les messages d'un utilisateur par exemple

je débute en POO et MVC donc je sais pas ou est ce que je vais mettre le code la pagination dans modul, controleur ou la vue ?

pour le moment j'ai une classe avec une method qui me récupère tous les message d'un utilisateur je passe la tableau de résultat a ma vue et la je fait une boucle pour les afficher

comment ajouter la pagination dans ce cas?

merci d'avance

Eléphant du PHP | 453 Messages

21 févr. 2013, 10:24

Salut,

Le mieux est que tu te crées une class pour ça. Ta class devrait être instanciée dans ton controller. Les données sont affichées dans ta vue bien sûr.
La Tux attitude avec les kiw'z syou plait
Komodo Edit - Inkscape - Dia

ViPHP
AB
ViPHP | 5818 Messages

21 févr. 2013, 18:19

pour le moment j'ai une classe avec une method qui me récupère tous les message d'un utilisateur je passe la tableau de résultat a ma vue et la je fait une boucle pour les afficher
Ben oui c'est la même chose sauf que tu ne fais afficher que les messages d'une page (pour faire ton système de pagination)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 févr. 2013, 18:29

En 2 mots :
  • La vue affiche les résultats sans se poser la question du nombre de données à afficher. Mais elle doit gérer l'affichage de la liste des pages
  • Le contrôleur sais trouver le nombre d'éléments par page, et dans quel page tu es, et les passes au model
  • Le modèle sais limiter ses résultats, quand on le lui demande
Au final, c'est le contrôleur qui pilote tout ça, c'est le modèle qui limite les données remontées, et c'est la vue qui affiche la liste des pages.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphant du PHP | 417 Messages

28 févr. 2013, 16:53

Merci pour votre réponse, alors j'ai reussi a faire mon systeme de pagination sauf que j'ai encore un problème je sais pas comment le gérer

je donne un exemple : imaginer un forum sur euuh sport par exemple le lien vers ce forum est index.php?forum=3 le 3 c'est l'identifiant de forum sport

dans ce forum j'affiche 10 sujets par page et supposent que j'ai 100 sujets donc ça me fait 10 pages

j'ai donc un pagination de type : Première page [2] [3] [4] ... Dernière page

enfait mon problème c'est dans les url de mes 10 pages je recupérer l'url via $_SERVER['PHP_SELF'] et ça me recupére seulement l'url http://127.0.0.1:8080/projet2013/index.php?page=4 (exemple pour lien vers la page 4) comment puis-je récupérer aussi le ?forum=3 ? pour que mon lien soit
http://127.0.0.1:8080/projet2013/index. ... m=3&page=4 ?

Eléphant du PHP | 417 Messages

06 mars 2013, 15:08

quequ'un peut m'aider ?

ViPHP
AB
ViPHP | 5818 Messages

06 mars 2013, 17:33

Je vois pas vraiment où est ton pb... Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']

Eléphant du PHP | 417 Messages

06 mars 2013, 17:43

Je vois pas vraiment où est ton pb... Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']

en fait ce que je veuux c'est de recupérer index.php?forum=3&page=4 au lieu de index.php

ViPHP
AB
ViPHP | 5818 Messages

06 mars 2013, 20:19

Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']

Mammouth du PHP | 1511 Messages

07 mars 2013, 17:30

Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']
Ou plus rapidement, si besoin de faire sauter certaines variables, $_GET.

Eléphant du PHP | 417 Messages

11 mars 2013, 20:13

Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']
merci ça marche bien sauf que j'aimerai zapé un $_GET (ce lui de la pagination "num=1..")

Mammouth du PHP | 1511 Messages

11 mars 2013, 23:10

Si tu veux récupérer les variables dans l'url tu peux utilser $_SERVER['QUERY_STRING']
merci ça marche bien sauf que j'aimerai zapé un $_GET (ce lui de la pagination "num=1..")
Tu fais unset($_GET['num']) et hop, la clef num est supprimée du tableau $_GET
Puis tu peux ensuite, via une boucle sur $_GET, recomposer ton query string.

Eléphant du PHP | 417 Messages

12 mars 2013, 22:50

Tu fais unset($_GET['num']) et hop, la clef num est supprimée du tableau $_GET
Puis tu peux ensuite, via une boucle sur $_GET, recomposer ton query string.
merci momox mais je sais pas comment récupérer le nom de get ( je parle pas de la valeur de variable get )

par exemple mon lien peu etre

index.php?page=message&type=inbox&num=3

ou bien

index.php?page=article&num=4

donc pour le première je souhaite récupérer page=message&type=inbox et le 2eme lien page=article

Mammouth du PHP | 1511 Messages

12 mars 2013, 23:31

Regarde la doc de php concernant foreach.

Eléphant du PHP | 417 Messages

13 mars 2013, 00:27

Regarde la doc de php concernant foreach.
ce lui là ?

Code : Tout sélectionner

foreach ($_GET as $key => $value) { if ($key != "C") { // ignore this particular $_GET value $querystring .= $key."=".$value; } }