如果我在英语中犯了一些错误而不是我的母语,请原谅我。 到了这一点。这是我的分页代码:
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"] . "&page=" . ($i) . "'>" . $i . "</a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i-1) . "'> Previous </a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&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
答案 0 :(得分:0)
问题在于你的for循环。您正在检查是否$_GET['page'] == $i
,如果不是,您正在连接到$page_navigation
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i) . "'>" . $i . "</a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i-1) . "'> Previous </a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&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"] . "&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"] . "&page=" . ($i) . "'>" . $i . "</a>";
if ($i != ceil((sizeof($files) + sizeof($dirs)) / $thumbs_pr_page)) $page_navigation .= " | ";
}
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($_GET["page"]+1) . "'> Next </a>";
}
但你也应该“抓住”0
和n+1
页面(然后不需要上一个/下一个按钮)
答案 2 :(得分:0)
首先,请尝试在else
之后加上括号,因为else
中的最后两个语句不会成为else
子句的一部分,将导致上一个和下一个成为for(;;;)
的一部分,而不是else
,这导致它可能重复上一个和下一个。
if ($_GET["page"] == $i)
$page_navigation .= "$i";
else{
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i) . "'>" . $i . "</a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i-1) . "'> Previous </a>";
$page_navigation .= "<a href='?dir=" . $_GET["dir"] . "&page=" . ($i+1) . "'> Next </a>";
}