【问题标题】:Pagination with PHP使用 PHP 进行分页
【发布时间】:2013-04-22 04:29:55
【问题描述】:

我正在尝试运行我创建的分页代码,但我不知道如何将所有项目从表格中分离到页面(分页)。

以下是代码。

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 新手,对此有任何想法,非常感谢。

【问题讨论】:

  • start = Items_per_page * page stop = start + Items_per_page 页面从 0 开始所以在第 1 页你的偏移量将是:0 * 52 = 52 page 2 = 1 * 52 = 52 page 3 = 2 * 52 = 104 以此类推

标签: php sql pagination


【解决方案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; // 0 when 1, 52 when 2, 104 when 3 etc.
$limit_stop = 52;

它应该可以工作。

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

【讨论】:

  • 这确实有效。我在拐弯抹角。谢谢!
【解决方案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;
$limit_stop = 52;

【讨论】:

  • 嗯,对不起。到目前为止我没想到,因为您的答案的样式相同^^
  • 我可能会认为这是因为它是格式化它的最易读的风格方式(并且也几乎符合所有 PHP 编码标准)。 :P
  • 不是,我是说排版:抄题,写一句话,写短解。^^
猜你喜欢
  • 2014-11-20
  • 2011-07-18
  • 2015-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多