Le livre d'or a fait le tour des Terres du Milieu : Bruna veut une page qui rassemble tous les avis, tous plats confondus. Pipin l'a écrite (/livre-d-or), le template est prêt, mais la page affiche tous les avis d'un coup. Ils sont déjà une cinquantaine, et ce ne sera bientôt plus lisible.
Votre mission
Découpez le livre d'or en pages de 10 avis, du plus récent au plus ancien :
/livre-d-ormontre les 10 avis les plus récents, le total (« 50 avis de voyageurs ») et « Page 1 sur 5 » ;/livre-d-or?page=2montre les 10 suivants : aucun avis sauté, aucun en double ;- une page qui n'existe pas (
?page=9,?page=0,?page=abc) répond 404 ; - les liens « Plus anciens » et « Plus récents » du template fonctionnent ;
- la base ne renvoie que les avis de la page, en 3 requêtes au plus.
Paginer, c'est demander moins à la base
Récupérer les 50 avis pour n'en afficher que 10, ça marche aujourd'hui, mais plus avec 50 000. La base sait limiter ce qu'elle renvoie (LIMIT, OFFSET), et Doctrine le demande pour vous. Il reste une question : combien y a-t-il de pages ? Pour le savoir, il faut compter tous les avis, et c'est une autre requête.