【问题标题】:How do I loop through results and display day of the week once at every change in day using php and mysql?如何使用 php 和 mysql 在每天的每次更改时循环显示结果并显示星期几?
【发布时间】:2011-06-08 06:11:42
【问题描述】:

使用我当前的查询和循环:

$sched = mysql_query("SELECT * 
FROM  `shows` 
ORDER BY  `shows`.`show_time` ASC")
or die(mysql_error());  


echo "<ul>";

while($row = mysql_fetch_array($sched)){
echo "<li><a href=\"#$row[id]\">";
echo $row['title'];
echo "</li>";
}
echo "</ul>";

这非常适合像这样显示我的结果:

  • 节目名称 1
  • 节目名称 2
  • 节目名称 3

但是,我想在每天的每次更改开始时将一个项目添加到列表中,以便显示如下:

  • 星期一
  • 节目名称 1
  • 节目名称 2
  • 星期二
  • 节目名称 3
  • 星期三
  • 节目名称 4

我无法完全围绕执行此操作所需的循环。知道“show_time”字段是日期时间类型可能会有所帮助,因此它包含时间和星期几的信息。

谢谢。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    简单的调整:

    echo "<ul>";
    $curDay='';
    while($row = mysql_fetch_array($sched)){
       $d=date('l',strtotime($row['show_time']));
       if($d!=$curDay){
         echo '<li>'.$d.'</li>';
       }
       $curDay=$d;
       echo '<li><a href="#',$row['id'],'">',$row['title'],"</li>";
    }
    echo "</ul>";
    

    初始化$curDay,然后每次循环,检查特定日期是否与上一次循环不同(或与初始值不同)

    【讨论】:

    • 另外,将查询更改为“SELECT id, title, DAYNAME(show_time) as show_time FROM shows ORDER BY shows.show_time ASC”也是有意义的
    • 这将无法正常工作,因为 curdy 变量会同时跟踪日期和时间(因为问题说明包含了一天中的时间,因此您将获得每个 Showtime 的新时间标题,而不是每天.
    • @Simon date('l',strtotime(DATE_TIME)) 销毁除星期几之外的所有数据。~
    • 如果您按照我的建议使用 DAYNAME() 对其进行格式化,它应该可以工作。还是我错过了什么?
    • @AR DAYNAME 会很好~ PHP 的strtotime 也可以很好地处理 DATETIMES
    【解决方案2】:

    最好的方法是在循环中保留一个标志,并与之前的值进行比较。

    例如。

    $previousDay = '';
    while($row = mysql_fetch_assoc()) {
      if ($previousDay != date('l', $row['show_time'])) {
         echo '<h2>' . $date('l', $row['show_time']) . '</h2>';
      }
      ...
      $previousDay = date('l', $row['show_time']);
    }
    

    【讨论】:

    • 这可以通过将日期调用移动到循环范围内的变量来进行一些优化,但是在 iPad 上编码已经够痛苦了,所以要等到明天!
    【解决方案3】:

    调整您的查询以首先按show_time 排序。

    "SELECT * FROM  `shows` ORDER BY `show_time`, `shows` ASC"
    

    然后按照 Shad 的建议跟踪当前日期,解析 show_time 以确定日期。

    【讨论】:

      猜你喜欢
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      相关资源
      最近更新 更多