[英]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"] . "&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
問題出在您的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']
),因此需要將它們移出循環。
您需要將下一個和上一個按鈕移出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"] . "&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
頁(然后不需要“上一個/下一個”按鈕)
首先,請嘗試用括號括起來在后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>";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.