不确定somone是否可以帮助解决这个问题,但尝试了各种各样的事情 并且似乎无法解决它。寻找相当一个 咬了一下,没有找到任何东西,我设法把一个粗略的临时修复 这个地方但是以迂回的方式工作并且不理想。
我正在尝试显示Feed的输出,并提供分页的示例代码 结果。
示例代码几乎可以工作并显示页面应该如此 有两个问题:
1)如果我将每页的项目数设置为示例10 - 如果是 饲料有10个或更少的项目,然后它不显示任何东西。如果有 例如,Feed中的五个项目然后我需要设置数量 每页结果为4,这样就可以创建两个页面然后就可以了 显示。如果我将其设置为显示5或10,则不会显示任何内容。
2)这可以连接到上面但是如果有100个项目 feed和我将每页的项目数设置为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>
我知道很难查看上面的编码量并发现任何内容 所以我知道这是一个很长的镜头。
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
您的代码中存在几个错误。
如果您有一个页面所需的Feed超过所需的页面,则首先显示页面!
如果您有超过1页的页面,那么您可以安全地$onePage = 0
,但最后您只是在这种情况下输出而不是另一个:
<?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++;
}
// Here the else is missing!
?>
你的第二个问题,如果100个项目将创建11个页面,则连接到此:
// Next Page
if($startNumber + $itemsPerPage <= $numItems) {
$pageString .= '<a href="'.$_SERVER['PHP_SELF'].'?'.$Qstring.'ItemNumber='.($startNumber + $itemsPerPage).'">Next</a>';
}
如果每页有100个项目10个Feed,并显示第10页!您的$startNumber
是90,因为您从基于0的索引开始。因此,$startNumber + $itemsPerPage
正好是100,所以它恰好是您的Feed $numItems
,也是100。
因此请将<=
替换为<
。