好吧,所以我在新闻部分编码,每次插入新新闻时,它都会显示在旧新闻的下面。我想让它按id排序,但让它像倒退一样开始。我不知道如何解释,但是的我希望它们按id添加的最新id排序,所以如果插入的第一行的id是1,那么我希望它显示在下一个id下面。
所以id=2的行将在这里
所以id=1的行将在这里
这就是我想要的,而不是像这个
所以id=1的行将在这里
所以id=2的行将在这里
很抱歉我的错误解释,我希望这是可以理解的
这是我到目前为止的代码
<?php
require("include/config.php");
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id");
while($row = mysql_fetch_array($sqlnews)) {
$dbdate = $row['date'];
$dbnews = $row['news'];
echo "<h1><strong>$dbdate</strong></h1>";
echo "<div class='content'>$dbnews</div><br><br>";
}
?>
在ORDER BY
子句中添加DESC
SELECT * FROM news ORDER BY id DESC
默认情况下,它处于ASC
模式。
SELECT * FROM news ORDER BY id DESC
DESC是降序关键字
ASC是升序
如果两者都不指定,则默认行为为递增
只需在sql查询中使用DESC
关键字。
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");
然而,使用id并不是一个好主意,因为从语义上讲,没有什么可以阻止某人更改自动分配id的顺序。
因此,您应该添加一列created_at
。每次插入一行时,都可以使用SQL函数NOW()
。
优点是你可以说:
SELECT * FROM news WHERE created_at <= NOW() ORDER BY created_at DESC
这意味着你可以提前安排新闻项目,当日期/时间到达时,它会自动显示!
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");
试试这个:
只需要添加
order by id DESC
只需用以下代码替换您的代码:
<?php
require("include/config.php");
$sqlnews = mysql_query("SELECT * FROM news ORDER BY id DESC");
while($row = mysql_fetch_array($sqlnews)) {
$dbdate = $row['date'];
$dbnews = $row['news'];
echo "<h1><strong>$dbdate</strong></h1>";
echo "<div class='content'>$dbnews</div><br><br>";
}
?>