不確定somone是否可以幫助,但已嘗試過各種東西 ,似乎無法解決它。在搜索了相當多的 位後,沒有找到任何東西,我設法在 的地方設置了一個粗略的臨時修復程序,但是這種方法迂迴工作,並不理想。飼料分頁PHP邏輯
我想顯示一個飼料的輸出,並有示例代碼,分頁 的結果。
的示例代碼非常作品和顯示頁面,因爲它應該,但 這裏有兩個問題:
1)如果我設置每頁的項目數是作爲一個例子10 - 如果 飼料有10個或更少的項目,然後它不顯示任何東西。如果有 例如Feed中的五個項目,那麼我需要將每頁的 結果數設置爲4,以便它會創建兩個頁面,然後顯示 。如果我將它設置爲顯示5或10,則不顯示任何內容。
2)這可能與上面相關,但如果 Feed中有100個項目,並且我將每頁的項目數設置爲10,那麼它應該創建 10頁。實際發生的是它創建了11 - 第11頁是 空白。
下面是來自例子全額代碼(長度道歉):
<html>
<?php
$itemsPerPage = 10;
$numItems = '~~~NumberOfFeedItems~~~';
$onePage = 1;
$startNumber = 0;
if ($numItems > $itemsPerPage) {
$onePage = 0;
// Check for requested starting position
if (isset($_REQUEST['ItemNumber'])) {
$startNumber = $_REQUEST['ItemNumber'];
}
// Validate starting position
if ($startNumber > $numItems) {
$startNumber = 0;
}
}
$pageString = '';
// Create the list of pages, if needed
if ($onePage == 0) {
$Qparts = Array();
$parts = explode('&', $_SERVER['QUERY_STRING']);
if (count($parts) > 0) {
foreach ($parts as $value) {
if (substr($value, 0, 10) != 'ItemNumber') {
$Qparts[] = $value;
}
}
if (count($Qparts) == 0) {
$Qstring = '';
}
elseif (count($Qparts) == 1) {
$Qstring = $Qparts[0].'&';
} else {
$Qstring = implode('&', $Qparts).'&';
}
}
//
// Previous Page
$pageString = '<strong>';
if ($startNumber > 0) {
$newStartIndex = $startNumber - $itemsPerPage;
if ($newStartIndex < 0) {
$newStartIndex = 0;
}
$pageString .= '<a href="'.$_SERVER['PHP_SELF'].'?'.$Qstring.'ItemNumber='.$newStartIndex.'">Previous</a> ';
}
//
// The jump to page markers
if ($numItems > $itemsPerPage) {
$tempPages = (int)(($numItems/$itemsPerPage) + 1);
$x = 1;
if ($tempPages > 12) {
// There are too many pages to fit across
if ((($startNumber+1)/10) > 7) {
$pageString .= '... ';
$x = 1 + (int)(($startNumber+1)/10) - 6;
}
}
for ($y = 0; $x <= $tempPages; $x++, $y++) {
$tempStart = ($itemsPerPage * ($x - 1));
if (($tempStart <= $startNumber) && ($startNumber < ($tempStart + $itemsPerPage))) {
$pageString .= $x.' ';
} else {
$pageString .= '<a href="'.$_SERVER['PHP_SELF'].'?'.$Qstring.'ItemNumber='.$tempStart.'">'.$x.'</a> ';
}
if ($y >= 12) {
$pageString .= '... ';
break;
}
}
}
//
// Next Page
if ($startNumber + $itemsPerPage <= $numItems) {
$pageString .= '<a href="'.$_SERVER['PHP_SELF'].'?'.$Qstring.'ItemNumber='.($startNumber + $itemsPerPage).'">Next</a>';
}
$pageString .= '</strong>';
}
?>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>~~~FeedTitle~~~</title>
</head>
<body>
<h1>~~~FeedTitle~~~</h1>
<p>~~~FeedDescription~~~</p>
<hr>
<?php
echo $pageString."<br />\n";
$x = 0;
?>
<table width="100%">
~~~BeginItemsRecord~~~
<?php
if ($onePage == 0) {
if (($startNumber <= $x) && ($x < $startNumber+$itemsPerPage)) {
?>
<tr><td>~~~ItemPubShortDate~~~ ~~~ItemPubShortTime~~~</td></tr>
<tr><td><a href="~~~ItemLink~~~">~~~ItemTitle~~~</a></td></tr>
<tr><td>~~~ItemDescription~~~</td></tr>
<tr><td><hr></td></tr>
<?php
}
$x++;
}
?>
~~~EndItemsRecord~~~
</table>
<?php
echo $pageString."<br />\n";
?>
</body>
</html>
我知道這是很困難的,通過上述編碼量的外觀和發現任何 所以這是一個有點我知道的很遠。
在此先感謝您提供的任何幫助。
對不起延遲迴復 - 花了一點時間纔得到else語句的權利。非常感謝您花時間回覆 - 第一個問題是直接排序,第二個問題是在幾個地方,但您的答案是正確的,我也在這些地方進行了更改。非常感謝您的幫助! – onelove
是的沒問題,似乎很容易在其他人的代碼中發現這些類型的錯誤。 – mjb4