【问题标题】:Simple SQL question简单的 SQL 问题
【发布时间】:2009-07-12 13:37:58
【问题描述】:

(我编不出好标题,抱歉)

所以我用这个分页:

$page = $_GET['page'];

$max = 5;

// if $page is empty, set page number to 1
if (empty($page)) $page = 1;

$limit = ($page - 1) * $max; 

$sql = mysql_query("SELECT * FROM posts ORDER BY date DESC LIMIT $limit, $max");

$totalres = mysql_result(mysql_query("SELECT COUNT(id) AS tot FROM posts WHERE tid =     1"),0);    

$totalpages = ceil($totalres / $max);
?>

这可行,但我想要的是,即使我更改页面,日期最早的帖子也始终保持在最前面。我怎样才能做到这一点?我知道你可以,但我不记得怎么做。

希望你这样做,谢谢

【问题讨论】:

  • 只是一个快速提醒,而不是吹毛求疵。摆脱那个 Select *
  • 您选择的所有数据都需要从数据库服务器传输到您的 PHP 脚本。
  • William T Wild:你不知道他不需要所有数据。但是,如果你不同意,那么我同意,去掉那个选择 *。
  • 嗯,这里还有一些其他的答案,显然由于匿名投票而被作者删除?糟糕。任何人都应该如何从中学习......?

标签: php sql pagination


【解决方案1】:

您可能需要进行联合查询,因为您真正想要的是两条数据的组合...

  1. 最早的帖子
  2. 所有其他帖子减去针对页面位置调整的最旧帖子...

    select * from posts order by date DESC limit 0,1
    union
    select * from posts order by date desc limit $start,$end

现在调整你的值,所以 start 是你想要的最小页面 1(如果它是 0,你最旧的帖子将显示两次)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 2010-09-25
    • 2011-05-14
    • 1970-01-01
    • 2010-12-28
    相关资源
    最近更新 更多