0

如果我在英语中犯了一些错误,请原谅我,它不是我的母语。说到点子上了。这是我的分页代码:

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

4

3 回答 3

0

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

于 2013-08-14T13:26:18.737 回答
0

首先,请尝试在 the 后面加上括号else,因为,最后两个语句else不会成为else子句的一部分,这会导致 Previous 和 Next 成为 the 的一部分,而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>";
         }
于 2013-08-14T13:26:43.613 回答
0

问题出在你的 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不为真的每次迭代生成下一个/上一个链接(始终只有一次)。由于您只需要它们一次(相对于 current $_GET['page']),您需要将它们移到循环之外。

于 2013-08-14T13:23:47.043 回答