PHP:尝试提出“上一步”和“下一步”链接

时间:2011-01-11 20:48:58

标签: php math hyperlink

我每页显示10条记录。我目前正在使用的变量是......

$total = total number of records
$page  = whats the current page I'm displaying

我把它放在我的页面顶部......

if ( $_GET['page'] == '' ) { $page = 1; } //if no page is specified set it to `1`
else { $page = ($_GET['page']); }  // if page is specified set it

这是我的两个链接......

    if ( $page != 1 ) { echo '<div style="float:left" ><a href="index.php?page='. ( $page - 1 ) .'" rev="prev" >Prev</a></div>'; }     
    if ( !( ( $total / ( 10 * $page ) ) < $page ) ) { echo '<div style="float:right" ><a href="index.php?page='. ( $page + 1 ) .'" rev="next" >Next</a></div>'; }

现在我猜(除非我没有想到什么)我每次都可以显示“上一个”链接,除非页面为“1”。如何在最后一页上显示“下一步”链接的位置?

7 个答案:

答案 0 :(得分:2)

用以下代码替换最后一行代码:

if ($page*10 < $total) echo '<div style="float:right" ><a href="index.php?page='. ( $page + 1 ) .'" rev="next" >Next</a></div>';

答案 1 :(得分:1)

!( ( $total / ( 10 * $page ) ) < $page )

我...不认为这是正确的。

假设$total为1000 - 然后在第99页,1000 /990 小于99,但还有另一页要显示。

您可能希望检查10 * $page是否大于或等于$total

答案 2 :(得分:1)

如果有余数,则需要总计除以页数($total / 10)和额外页面。使用ceil功能。

$page < ceil($total / 10)

答案 3 :(得分:1)

分页是在Web项目中经常出现的,通常最好在某处创建某种类,或者至少是一些便利函数,它们可以为您提供所需的一切。

这是一个函数,它将返回可能有用的字典:

function pagination($numberItems, $perPage, $currentPage) {
    $numPages = ceil($numberItems/$perPage);
    return array( 
        'numberPages' => $numPages,
        'start' => ($currentPage - 1) * $perPage + 1,
        'end' => min($currentPage * $perPage, $numberItems),
        'hasNext' => $page != $numPages,
        'hasPrev' => $page != 1
    );
}

答案 4 :(得分:1)

你在最后一行有一个错误:

$totalPages = ceil( $total / 10 );
if ( $page < $totalPages ) ) { echo "<div style="float:right" ><a href="index.php?page='. ( $page + 1 ) .'" rev="next" >Next</a></div>"; }

答案 5 :(得分:1)


// lets get total number of pages here
$itemsPerPage = 10;
$totalItems = 105; // just for example
$pagesNo = ceil( $totalItems / $itemsPerPage );

// get the current page here...
$current = ( isset($_GET['page']) ) ? (int)$_GET['page'] : 1;    // if page is defined, use it, instead use 1
$current = ( $current > 0 ) ? $current : 1;                    // if page was -1,-2... for instance, use 1

// show us 'Prev' button
echo ( $current > 1) ? "<a href='".($current-1)."'>Prev</a>" : "";

// show current page NO
echo $current;

// show 'Next' button
echo ( $current < $pagesNo) ? "<a href='".($current+1)."'>Next</a>" : "";

应该是这样的...这只是快速代码...稍后,在某个页面范围内工作(设置应在当前页码之前/之后显示多少页面...)

答案 6 :(得分:1)

听起来你需要检测你是在第一页还是最后一页,并根据这些条件“保护”代码。

if (/* not the first page */) {
  // print the prev link
}

if (/* not the last page */) {
  // print the next link
}

你已经有了检测page = 1的代码所以现在你只需要确定你是否在最后一页(整数除法或ceil()应该是要走的路。)

对于SQL的PHP​​结果页面,有一篇关于PHPFreaks http://www.phpfreaks.com/tutorial/basic-pagination

的文章很整洁