寻呼下一个上一个相乘


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循环。上一页在前面,下一页在后面。下一页和上一页不需要依赖$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页面(然后不需要上一个/下一个按钮)

问题在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']),因此需要将它们移出循环。

首先,请尝试将括号放在else之后,因为else中的最后两个语句将不是else子句的一部分,这将导致Previous和Next成为for(;;;)的一部分而不是else,这可能会导致它重复Previous和Next。

        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>";
         }