11
votes

Pagination - 10 pages par page

J'ai un script de pagination qui affiche une liste de toutes les pages comme:

prev [1] [2] [3] [4] [5] [6] [7] [7] [8] [9] [10] [11] [12] [14] [14] [14]. >
Mais je voudrais seulement montrer dix des chiffres à la fois:
Précédent [3] [4] [5] [6] [7] [7] [8] [9] [10] [11] [11] [12] Suivant code>

Comment puis-je accomplir cela? Voici mon code jusqu'à présent: P>

<?php
/* Set current, prev and next page */
$page = (!isset($_GET['page']))? 1 : $_GET['page']; 
$prev = ($page - 1);
$next = ($page + 1);

/* Max results per page */
$max_results = 2;

/* Calculate the offset */
$from = (($page * $max_results) - $max_results);

/* Query the db for total results. 
   You need to edit the sql to fit your needs */
$result = mysql_query("select title from topics");

$total_results = mysql_num_rows($result);

$total_pages = ceil($total_results / $max_results);

$pagination = '';

/* Create a PREV link if there is one */
if($page > 1)
{
    $pagination .= '< a href="?page='.$prev.'">Previous</a> ';
}

/* Loop through the total pages */
for($i = 1; $i <= $total_pages; $i++)
{
    if(($page) == $i)
    {
        $pagination .= $i;
    }
    else
    {
        $pagination .= '< a href="index.php?page='.$i.'">'.$i.'</a>';
    }
}

/* Print NEXT link if there is one */
if($page < $total_pages)
{
    $pagination .= '< a hr_ef="?page='.$next.'"> Next</a>';
}

/* Now we have our pagination links in a variable($pagination) ready to
   print to the page. I pu it in a variable because you may want to
   show them at the top and bottom of the page */

/* Below is how you query the db for ONLY the results for the current page */
$result=mysql_query("select * from topics LIMIT $from, $max_results ");

while ($i = mysql_fetch_array($result))
{
    echo $i['title'].'<br />';
}
echo $pagination;
?> 


5 commentaires

Nous aimerions répondre aux questions, ne pas faire votre travail pour vous.


Comment avez-vous l'intention de déplacer automatiquement la page, après avoir montré 10 enregistrements. Vous avez besoin de JS pour que vous sachiez


Pourquoi votre HREF est-il avec un "_" entre les deux


Cuz C'est la première fois que je posterai quelque chose ici, et c'était crié à des limites de liaison lors de la publication première fois


J'ai réparé le Href pour vous, mais je suis réticent à effectuer plus de modifications, de peur que cette question tombe dans la fosse de la communauté Wiki de Doom. Je pense que la raison pour laquelle il criait des limites de liaison est parce que vous n'aviez pas votre code formaté correctement, de sorte que vous pensiez que vous essayiez de mettre des liens dans votre message.


3 Réponses :


32
votes

10 pages suivantes xxx

ou si vous voulez 5 prev et 5 suivant xxx


4 commentaires

Merci pour votre réponse rapide, c'était vraiment utile. Vous n'avez jamais pensé que ce serait si vite! :)


ahh .. ne savait pas à ce sujet accepter cette chose. La dernière question de la dernière question .. Comment faire tout le temps qu'il y a une quantité constante de pages (chiffres) affichés. - Lorsque j'ouvre, il affiche les pages 1 à 6, chaque fois que lorsque j'appuie ensuite, il ajoute 1 extra - 1-7; 1-8; 1-9; et fermer à la fin il enlève un par un ...


@Arthur: Utilisez le second pour, cela fonctionne comme un 1-10 si vous êtes à la page 5, et si vous cliquez sur Suivant, vous allez à la page 6 et que vous disposez 2-11, à la page 7, vous avez 3-12. Et vous pouvez accepter la question en cliquant sur Mark sous le numéro de votes sur le côté gauche de mon message.


Je l'ai fait, merci pour cela, mais je me demandais simplement comment le faire montrer 10 pages au début (sur la 1ère page), 10 pages au milieu (à la 6ème ou 7ème page) et 10 pages de la dernière page. .. Merci quand même!



-1
votes
$page = 3;
$totalPages = 33;
$count = 9;
$startPage = max(1, $page - $count);
$endPage = min( $totalPages, $page + $count);

if($page-1 > 0){
    echo '<a class="btn btn-default" href="/search-results?page="'.($page-
1).'"><< Prev</a>';
} 

for($i = $startPage; $i < $endPage; $i++): if($i <= $totalPages):

    echo '<a class="btn btn-<?=$i == $page || $i == 1 && $page == "" ? 
    'success' : 'primary';?>"style="margin-right:2px;" href="/search-
    results?page="'.$i.'">'.$i.'</a>';

endif; endfor;
if($page < $totalPages){
    echo '<a class="btn btn-default" href="/search-results?page="'.
    ($page+1).'">Next >></a>';
}

0 commentaires

5
votes

Je cherche simplement une réponse à la même question initiale et je ne pouvais pas le trouver, alors c'est ce que j'ai proposé. J'espère que quelqu'un d'autre le trouve utile. XXX PRE>

Résultats: P>

$currentPage = 1;  // [1][2][3][4][5][6][7][8][9][10]
$currentPage = 4;  // [1][2][3][4][5][6][7][8][9][10]
$currentPage = 10; // [6][7][8][9][10][11][12][13][14][15]
$currentPage = 17; // [11][12][13][14][15][16][17][18][19][20]
$currentPage = 20; // [11][12][13][14][15][16][17][18][19][20] 


0 commentaires