0

我正在使用以下代码输出数据库条目:

<div id="main_area">
<div  id="container">
<div id="php_container" role="main">
<?php
include('connect_it.php');
$sqlget= "SELECT * FROM dbtablename";
$sqldata= mysqli_query ($dbcon,$sqlget) or die('this is an error');
while ($row = mysqli_fetch_array($sqldata, MYSQLI_ASSOC)) {
echo $row[ 'li' ] ;
}
?>
</div>
</div>
</div>

在页面加载时,我希望数据库条目按其日期(从最近到最近)排序,该日期存储在名为“已添加”的 mysql 字段中,格式为 DD/MM/YY。

我不确定它是否可以完成,但作为另一种选择,日期在定义的范围内,<span id="date">date: 27/11/11</span>所以也许这个范围可以用来订购数据?

所以我的问题是,我怎样才能使初始输出按日期从最近到最近?

我试过了:

$sqlget= "SELECT * FROM dbtablename ORDER BY added ASC";

但我得到了意想不到的结果。

谢谢你。

4

2 回答 2

1

如果您添加的列是 DATE、DATETIME 或 TIMESTAMP 类型,您可以像这样使用 DATE_FORMAT,

$sqlget= "SELECT *, DATE_FORMAT(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY added ASC";

见,https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

否则,如果它是一个字符串尝试(虽然它确实应该是一个 DATE 类型),

$sqlget= "SELECT *, STR_TO_DATE(added,'%d/%m/%y') as addedFormated FROM dbtablename ORDER BY STR_TO_DATE(added,'%d/%m/%y') ASC";

https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date

于 2012-11-30T03:53:32.627 回答
1

首先是一些小事情(还有更多),<span id="date">...</span>因为 id 属性应该是唯一的,所以无效,请<span class="date">...</span>改用。浏览器会渲染它,甚至在大多数情况下都能正确渲染它,但不是正确使用“id”属性。

您需要选择查询中的所有列吗?如果没有,请仅选择您需要的那些。

您想要的查询是:

SELECT * FROM dbtablename ORDER BY added DESC

但这将选择所有行和所有列。现在是棘手的部分。您说您的数据以“dd/mm/yyy”格式存储,因此此查询将不起作用,因为每年每月大约有 30 天。您需要使用datetime列类型,它将以yyyy-mm-dd 00:00:00格式存储您的日期数据。如您所见,这将纠正您的所有问题。

或者,正如其他人所说,用于STR_TO_DATE(added,'%d/%m/%y')提取数据。

然后,在您提取的数据中,在 PHP 中,使用($var您的日期值在哪里):

echo date('d/m/y',strtotime($var));

希望有帮助。

于 2012-11-30T03:58:13.233 回答