salut,
pour la pagination c'est pas super complexe, mais il te faut deux données :
- le nombre d’élément maximum que tu va afficher (donc soit le nombre de ligne de ton csv soit le nombre de ligne correspondant à ton tri.
- le nombre d’élément par page
le nombre de page c'est relativement simple : nbpage = nbligne / nb ligne par page (je te laisse regarder la
doc de la fonction ceil pour voir et comprendre pourquoi tu va devoir l'utiliser

)/
ensuite le passage entre les pages. Pour cela il te faut un lien précédent et un suivant.
il y a deux écoles, ceux qui passe le numéro de la page suivante et ceux qui passe une valeur remarquable.
dans ton cas tu affiche des lignes d'un fichier qui ne devrait pas trop bouger passer le numéro de passe est la bonne idée, tu pourras ainsi déterminer facilement la première ligne à afficher sur la page suivante ou précédente.
comment ?
sachant que l'on a X ligne par page et que l'on est à la page Y. qu'elle est le premier élément a afficher ?
tatonnons :
X * Y : le nombre de ligne total sur Y page
X* (Y-1) : le nombre de ligne total Y- 1 page
(X * (Y-1)) +1 : le nombre de ligne total jusqu’à la fin de la précédente + 1, donc la première ligne de la page Y
comment afficher une page ?
si je connais la première ligne à afficher et le nombre de ligne à afficher une simple boucle for suffit
for( $i = $premièreLigne, $i < $dernièreLigne, $i++) {}
avec $dernièreLigne = $premièreLigne + $nbLigneParPage;
pourquoi ne pas mettre le calcul dans la boucle for ?
parce ce que tu veux afficher 50 lignes tu va faire 50 fois ce calcul, alors que la tu ne fait qu'une fois.
on a donc "gagné" (ou plutôt économisé) 49 fois ce calcul, tu multiplie par le nombre de page vu ça fait pas mal de calcul pour rien d'éviter

).
tu as à peux prêt tout, sauf une chose : comment gérer avec les lignes souhaitées pour utiliser la boucle for ?
le plus simple serait d'utiliser la fonction
file pour monter le tableau en mémoire. Mais si le fichier est très volumineux (disons plusieurs dizaine de méga octet) tu risque de saturer la mémoire que php peux utiliser pour ton script et l’arrêter en court de route.
c'est une bonne solution si tu maîtrise la taille du fichier (genre 1Mo max).
une autre solution serait de lire le fichier au file de l'eau comme tu le fait et "compter" les saut de ligne, lorsque tu arrive a la première ligne à afficher tu remplis en tableau avec les infos dont tu as besoin et tu arrête a la dernière ligne dont tu as besoin (break).
une fois que tu as un beaux tableau avec tes données tu l'utilise dans la boucle for.
le problème de ces solutions c'est qu'elles sont lentes et vraiment pas pratique.
peux être devrait tu songer a utiliser une base de donnée. Suivant les besoin une base comme SQlite est suffisante.
si tu part sur cette voir tu n'as qu'une seule fois à réaliser l'insertion des données en base et les requêtes seront plus simple (à chaque mise à jour du fichier il faut rejouer la mise à jour de la base bien sur

).
@+