2012-12-12 115 views
2

我正在处理一个块,它将显示最后10个帖子,当用户点击“加载更多”按钮时,我想显示10个旧帖子。mysql:从DESC LIMIT选择最后10行

我如何选择最后10行,如果我已经使用DESC LIMIT?

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' 
AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $more;"); 
+0

什么是不工作关于你在做什么?你看到什么错误?它应该工作得很好,可以更好的参数化,只需重新渲染帖子.... – Colleen

回答

4

您正在使用一个参数进行限制。但是您可以使用LIMIT x,y来指定x(返回的第一条记录的位置)和y(要返回的记录数)。

将一个变量传递给像results.php?start=x这样的页面来设置一个起始位置。

if (!isset($_REQUEST['start'])) { $start = 0; } else { $start = (int)$_REQUEST['start']; } 

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' 
AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $start,10;"); 

然后你就可以产生像这样一个链接到下一个页面:

echo '<a href="results.php?start=' . ($_REQUEST['start']+10) . '">Next 10 results</a>';

+0

值得指出的是,在链接到下一个结果页面时,我们应该使用'$ start'变量来填充代码的顶部而不是'$ _REQUEST ['start']')像这样:'...。 ($ start + 10)。 ...'。原因在于,如果用户在URL中未传递启动变量的情况下访问该页面,则会在尝试访问'$ _REQUEST'变量中的未定义索引'start'时生成警告级别错误。 –

1

您应该添加另一个参数$start,并使用下面的查询

mysql_query("SELECT title,id,alt_name FROM dle_post WHERE approve='1' AND date >= '$monthagodate' AND date < '$curdate' + INTERVAL 1 day ORDER BY date DESC LIMIT $start, $more;"); 

这里$start用于电话MySQL要提取记录的起始点。