【问题标题】:Data separate by date in php from MySQL using Table使用表在 php 中按日期从 MySQL 中分隔数据
【发布时间】:2016-09-27 23:48:36
【问题描述】:

这是来自 PhpMyadmin 的数据:

这些就是代码。

<table class="table table-bordered">
  <thead>
    <tr><th>Sn</th><th>Status</th> <th>Location</th> <th>Time</th></tr>
  </thead>
  <tbody>
    <?php
        $i=0;
        $query2 = "SELECT * FROM tbl_statustimeline WHERE cons_no = '$cons_no' ORDER BY date DESC";
        $results2 = $mysqli->query($query2);
        if($results2){
            while($row2 = $results2->fetch_assoc()) {
                $i++;
    ?>
    <tr>
      <td colspan='4'><?php echo $row2['date']; ?></td>
    </tr>
    <tr>
        <td><?php echo $i; ?></td>
        <td><?php echo $row2['status']; ?> - <?php echo $row2['Location']; ?></td>
        <td><?php echo $row2['address']; ?></td>
        <td><?php echo $row2['time']; ?></td>
    </tr>
    <?php
          }
        }
    ?>
         </tbody>
    </table>

所以我需要像 2016-07-12、2016-07-15、2016-07-19 等这样的日期将与这些信息分开显示。

【问题讨论】:

  • 添加有问题的数据你想要什么?
  • 数据将按日期分隔。和 date 将显示每个日期的每一行。然后其他状态将按时间显示其他行。您可以查看 DHL 跟踪系统如何使用此跟踪号显示其状态:9699662545 dhl.com.bd/en/express/tracking.html,您会明白的。谢谢

标签: php mysql database html-table


【解决方案1】:

如果您想获得与 DHL 跟踪系统相同的结果,您有 2 个变体:

1) SELECT * FROM table ORDER BY TIMESTAMP(date_column,time_column) DESC

然后在您的脚本中检查当前行中的日期是否与前一行中的日期不同 - 这是您必须显示日期分隔符的时刻;

2) SELECT DISTINCT date_column FROM table

您首先使用上述查询收集您需要的所有日期,然后对于每个日期,您必须显示日期分隔符并发出另一个 SQL 查询

SELECT * FROM table WHERE date_column = Your_Currently_Enumerated_Date ORDER BY time_column DESC

获取时间及其状态

【讨论】:

  • 感谢 IVO GELOV,我找到了解决方案。
  • 如果我的回答对你有帮助,你愿意投票吗?如果没有 - 好吧,也许下次:))))
【解决方案2】:
<table class="table table-bordered">
      <thead>
        <tr><th>Sn</th><th>Status</th> <th>Location</th> <th>Time</th></tr>
      </thead>
      <tbody>
        <?php
            $i=0;
            $cons_no=$row["cons_no"];
            $query2 = "SELECT * FROM tbl_statustimeline WHERE cons_no = '$cons_no' ORDER BY date DESC";
            $results2 = $mysqli->query($query2);
            if($results2){
                $currentDate = false;
                while($row2 = $results2->fetch_assoc()) {
                    $i++;
                    if ($row2['date'] != $currentDate){
        ?>
        <tr>
          <td colspan='4'><?php echo $row2['date']; ?></td>
        </tr>
        <?php $currentDate = $row2['date'];
            }
        ?>
        <tr>
            <td><?php echo $i; ?></td>
            <td><?php echo $row2['status']; ?> - <?php echo $row2['Location']; ?></td>
            <td><?php echo $row2['address']; ?></td>
            <td><?php echo $row2['time']; ?></td>
        </tr>
        <?php
              }
            }
        ?>
        </tbody>
  </table>

我的输出是这样的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多