Donc je le fais en PHP mais c'est un problème de logique donc je vais essayer de l'écrire aussi génériquement que possible.Problème de pagination [PHP]
Pour commencer voici comment fonctionne ce script Pagination:
- pour (piochez trois premières pages liens)
- si (tirage de (...) s'il y a des pages entre les pages de # 1 et # 3 pages de)
- pour (dessiner page en cours et deux pages de chaque côté de celui-ci relie)
- si (dessiner elipsis (...) s'il y a des pages entre les pages 3 et les pages de # 5)
- pour (piochez trois dernières pages Liens)
Le problème est que quand il y a de faibles quantités de pages (je l'ai remarqué lorsque le nombre de pages était à 10) il devrait y avoir une ellipse mais aucun n'est dessiné.
Sur le code:
$page_count = 10; //in actual code this is set properly
$current_page = 1; //in actual code this is set properly
for ($i = 1;$i <= 3;$i++)
{
if ($page_count >= $i)
echo $i;
}
if ($page_count > 3 && $current_page >= 7)
echo "...";
for ($i = $current_page - 2;$i <= current_page + 2;$i++)
{
if ($i > 3 && $i < $page_count - 2)
echo $i;
}
if ($page_count > 13 && $current_page < $page_count - 5)
echo "...";
for ($i = $page_count - 2;$i <= $page_count;$i++)
{
if ($page_count > 3)
echo $i;
}
Je figure la meilleure idée serait d'être de modifier l'un des deux points de suspension si les déclarations d'inclure un cas comme celui-ci, mais je l'ai essayé et je suis perplexe.
s'il vous plaît Notez également que je condensé ce code pour l'amour de lisibilité si s'il vous plaît ne pas donner des conseils comme « ceux pour les boucles sont inefficaces parce qu'ils recalcule CURRENT_PAGE - 2 pour chaque itération » parce que je sais :)
Pour ceux qui veulent voir comment fonctionne cette logique, voici un exemple de sortie (modifiée) avec itération $ page_count et $ current_page. http://rafb.net/p/TNa56h71.html
Ce n'est pas un problème de PHP! Merci de ne pas ajouter de balise PHP car l'exemple de code n'est même pas écrit en PHP! –
Vous pouvez fournir un code d'exemple * working * afin que les personnes qui veulent tester leur propre logique n'aient pas à ré-implémenter votre code 'psuedo' dans leur propre langue juste pour pouvoir le tester. –
Ok je l'ai changé en code PHP:/ –