簡體   English   中英

分頁下一個上一個

[英]Pagination next previous multiplied

如果我在英語上犯了一些錯誤而不是我的母語,請原諒我。 要點。 這是我的分頁代碼:

if (!isset($_GET["page"])) $_GET["page"] = 1;
if (sizeof($dirs) + sizeof($files) > $thumbs_pr_page)
{
    $page_navigation .= "$label_page ";
    for ($i=1; $i <= ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page); $i++)
    {
        if ($_GET["page"] == $i)
            $page_navigation .= "$i";
            else
                $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i) . "'>" . $i . "</a>";
                $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i-1) . "'> Previous </a>";
                $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i+1) . "'> Next </a>";
        if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page)) $page_navigation .= " | ";


    }   
}

任何想法出了什么問題? 下一個/上一個按鈕是可變的。 但是它應該僅在左側應該在前,而在右側應該在后。 我現在只學習php,對我來說很難。 在這里,您可以看到它的外觀: http : //tinypic.com/view.php?pic=2djl3m&s=5 ,它應該像這樣: http : //tinypic.com/view.php?pic=2eeli54&s=5

問題出在您的for循環中。 您正在檢查$_GET['page'] == $i ,如果不是,則串聯到$page_navigation鏈接

$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i) . "'>" . $i . "</a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i-1) . "'> Previous </a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i+1) . "'> Next </a>";

這將為$_GET['page'] == $i不成立的每次迭代生成“下一個/上一個”鏈接(總是重復一次)。 由於您只需要使用它們一次(相對於當前的$_GET['page'] ),因此需要將它們移出循環。

您需要將下一個和上一個按鈕移出for循環。 前一個在前面,下一個在后面。 下一個和上一個不需要依賴$ i-它們應該僅依賴於當前加載的頁面。

if (!isset($_GET["page"])) $_GET["page"] = 1;
if (sizeof($dirs) + sizeof($files) > $thumbs_pr_page)
{
    $page_navigation .= "$label_page ";

    $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($_GET["page"]-1) . "'> Previous </a>";

    for ($i=1; $i <= ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page); $i++)
    {
        if ($_GET["page"] == $i)
            $page_navigation .= "$i";
        else
            $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i) . "'>" . $i . "</a>";
        if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page)) $page_navigation .= " | ";


    }   
    $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($_GET["page"]+1) . "'> Next </a>";
}

但是您還應該“捕獲” 0n+1頁(然后不需要“上一個/下一個”按鈕)

首先,請嘗試用括號括起來在后else ,因為,在過去的兩個語句else將不會是一部分else條款,這將導致一個和下一個要的一個部分for(;;;)而不是else ,這導致它可能重復上一個和下一個。

        if ($_GET["page"] == $i)
            $page_navigation .= "$i";
        else{
            $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i) . "'>" . $i . "</a>";
            $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i-1) . "'> Previous </a>";
            $page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&amp;page=" . ($i+1) . "'> Next </a>";
         }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM