【问题标题】:How to list records by date?如何按日期列出记录?
【发布时间】:2018-06-01 20:32:03
【问题描述】:

您看到我正在尝试列出数据库中表的记录,但我想通过以下方式进行:

  1. 首先,它必须显示日期
  2. 然后应该显示该日期的所有记录

在我的数据库表中,我有 4 个字段:

id, task, date, time

例如,一天中有多个任务在不同的时间执行。然后我在我的数据库中存储了许多不同日期和不同时间的任务。我想要的是每天列出它们。查阅数据库并显示一个列表,其中首先显示日期,然后显示在该日期完成的所有任务,然后显示另一个日期,然后显示该日期的所有任务,依此类推。

类似的东西

这是我的php代码

$obj = new Task();
$consult = $obj->Lists();

date_default_timezone_set("America/Mexico_City");
$dateActual = date("Y-m-d");

while ($result = $consult->fetch_object()) {

    echo "<button class='btn btn-default'>date = " . $result->date . "</button><br>";

    $consult2 = $obj->Lists2($dateActual);
    while($result2 = $consult2->fetch_object()) {
          echo "<span>". $result2->time ."</span><br>";
    }
    $dateActual = $result->date;
}

我对数据库的查询是:

public function Lists2($date) 
{
    global $conexion;

    $sql = "SELECT ar.*, date_format(ar.date, '%d/%m/%Y') as date, 
                   date_format(ar.time, '%r') as time, 
                    u.user as User 
            FROM task_recents ar 
                INNER JOIN user u ON ar.iduser = u.iduser 
            WHERE date = '$date' 
            ORDER BY ar.time DESC";
    $query = $conexion->query($sql);
    return $query;
}

public function Lists() 
{
    global $conexion;

    $sql = "SELECT ar.*, date_format(ar.date, '%d/%m/%Y') as date, 
                    date_format(ar.time, '%r') as time, 
                    u.user as User 
            FROM task_recents ar 
                INNER JOIN user u ON ar.iduser = u.iduser 
            ORDER BY ar.time DESC";
    $query = $conexion->query($sql);
    return $query;
}

结果是它向我显示了重复的日期及其各自的记录。

我想要实现的是这样的:

我该怎么做?

PD:我得到的结果是这样的:

但我不喜欢那样...

【问题讨论】:

  • 您能展示一下您当前的结果吗?并提供一些真正有帮助的表格数据
  • 结果真的很长,因为我的表中有 67 行数据......但我编辑了我的问题,并放了一些结果图片

标签: php jquery mysql sql html


【解决方案1】:

只要列之间存在匹配,INNER JOIN 关键字就会从两个表中选择所有行。如果“Orders”表中存在与“Customers”不匹配的记录,这些订单将不会显示!

以下查询不应再生成重复记录

SELECT 
    ar.id,
    ar.task,
    date_format(ar.date, '%d/%m/%Y') as formattedDate, 
    date_format(ar.time, '%r') as formattedTime, 
    u.user as User 
FROM 
    task_recents ar 
LEFT JOIN 
    user u 
ON 
    u.iduser = ar.iduser 
WHERE 
    date = '$date' 
ORDER BY 
    ar.time 
DESC

【讨论】:

    猜你喜欢
    • 2014-01-31
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多