分页下一个上一个成倍增加

时间:2013-08-14 13:03:39

标签: php

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

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

3 个答案:

答案 0 :(得分: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不为真的每次迭代生成下一个/上一个链接(除了一次之外总是如此)。由于您只需要它们一次(相对于当前$_GET['page']),您需要将它们移出循环。

答案 1 :(得分: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页面(然后不需要上一个/下一个按钮)

答案 2 :(得分:0)

首先,请尝试在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>";
         }