用PHP分页

时间:2013-04-21 20:17:30

标签: php sql pagination

我正在尝试运行我创建的分页代码,但我无法弄清楚如何将表中的所有项目分隔到页面(分页)。

以下是代码。

public function getCatItemsByPage($cat, $page) {
    $query = "SELECT 
                id
              FROM 
                categories
              WHERE
                name = '$cat'";


    $result = mysql_query($query) or die(mysql_error());

    $id = mysql_result($result, 0, "id");


 if($page == 1){
    $limit_start = 0;
    $limit_stop = 52;
 }else if($page == 2){
    $limit_start = ($page - 1) * 52;
    $limit_stop = $limit_start + 52; 
 }else{
    $limit_start = $page * 52;
    $limit_stop = $limit_start + 52; 
 }

    $output_videos_query = "SELECT 
               *
              FROM 
                videos
              WHERE
                cate_id=$id
              ORDER BY
                created_at
              DESC LIMIT 
                $limit_start, $limit_stop";

    $output_videos_result = mysql_query($output_videos_query) or die(mysql_error());

    return $output_videos_result;

}

我传递了类别($ cat)和页码($ page)。问题是如何按页计算$ limit_start和$ limit_stop。我花了最后一小时试图找出如何获取视频,但有些页面没有获得一些视频或某些页面获得了大量视频。

由于我对PHP有任何想法,我真的很感激。

2 个答案:

答案 0 :(得分:2)

if($page == 1){
    $limit_start = 0;
    $limit_stop = 52;
}else if($page == 2){
    $limit_start = ($page - 1) * 52;
    $limit_stop = $limit_start + 52; 
}else{
    $limit_start = $page * 52;
    $limit_stop = $limit_start + 52; 
}

这种情况应该怎样做?只需每次都这样做:

$limit_start = ($page - 1) * 52; // 0 when 1, 52 when 2, 104 when 3 etc.
$limit_stop = 52;

它应该有用。

$limit_stop必须是一个常量值,因为MySQL的LIMIT需要长度,而不是位置。

答案 1 :(得分:1)

你可以替换它:

if($page == 1){
    $limit_start = 0;
    $limit_stop = 52;
}else if($page == 2){
    $limit_start = ($page - 1) * 52;
    $limit_stop = $limit_start + 52; 
}else{
    $limit_start = $page * 52;
    $limit_stop = $limit_start + 52; 
}

更简单:

$limit_start = ($page - 1) * 52;
$limit_stop = 52;