【问题标题】:How to add the day on the top if the date change to an other day如果日期更改为其他日期,如何在顶部添加日期
【发布时间】:2013-03-20 19:29:47
【问题描述】:

我正在制作一个游戏新闻网站,我想要一个可以找到所有新闻主题的页面。所以我决定像很多网页一样使用它。

例子:

现在我想要这样,但我不知道如何做到这一点。我已经做了一个小小的开始,我希望你们能帮助我!

$query = mysql_query("SELECT * FROM `gb_news` order by `datetime` DESC");

while($news = mysql_fetch_array($query)) {

        echo $news['title'];
        echo $news['datetime']; 

}

这是一个非常简单的代码,但我只想知道当一篇文章在数据库中有新日期时如何添加这些天。

【问题讨论】:

    标签: php date time days


    【解决方案1】:

    将日期存储在循环之外,然后仅在日期更改时显示标题。

    $date = "";
    while ($news = mysql_fetch_array($query)) {
        if ($news['datetime'] != $date) {
            $date = $news['datetime'];
            echo $date;
        }
        echo $news['title'];
    }
    

    【讨论】:

    • 嗯,这很简单!谢谢! :)
    【解决方案2】:

    这样的事情可能对你有用:

    $query = mysql_query("SELECT * FROM `gb_news` order by `datetime` DESC");
    
    $prevDate ='';
    while($news = mysql_fetch_array($query))
    {
        $tmpDate = DateTime::createFromFormat('Y-m-d H:i:s', $news['datetime']);
        if($prevDate!=$tmpDate)
        {
            $prevDate = $tmpDate->format('d/m/Y');
            echo '<h1>'.$prevDate.'</h1><hr />';
        }
        echo '<p>'.$tmpDate->format('H:i').' - '.$news['title'].'</p>';
    }
    

    这是假设您的日期时间列的格式为YYYY-MM-DD hh:mm:ss,并且您希望将日期显示为DD/MM/YYYY,显然要根据口味进行编辑!

    另外,您的 PHP 版本必须 >= 5.3.0 才能使用DateTime class

    【讨论】:

      【解决方案3】:

      您可以做的是存储日期,然后在每次日期更改时更改布局:

      while($news = mysql_fetch_array($query)) {
        if(empty($date) || $date != date("format", $news['datetime'])){
           $date = date("format", $news['datetime']);
           //echo/print some html to show new section
        }  
        echo $news['title'];
        echo $news['datetime']; 
      }
      

      这将处理日期比较并知道何时更改日期。 “格式”表示您想要的日期格式类型,因为您可以回显/打印$date

      PHP date

      注意:不要使用 MySQL_*,因为它自 PHP 5.5 起已被弃用。改用 MySQLi_* 或 PDO

      【讨论】:

      • 感谢您的通知,我正要学习这个,但我知道我最好在继续之前学习这个?
      • @Rick 因为它不再受支持/工作,所以最好放弃它并学习一个新的。使用mysql_* 放在 PHP 5.5 服务器上的任何代码都会失败
      • 好吧,谢谢您的关注!我会看一些教程来学习它!谢谢!
      【解决方案4】:

      我不确定我是否完全理解您要完成的工作。为了让您的数据像您包含的图像一样显示,您需要在 MySQL 或 PHP(或真正的组合)中对相同日期的项目进行分组。

      类似:

      while ($news...) {
      
          // Get this article date
          $thisDate = new DateTime($news['datetime']) // Assuming this is a true datetime value
      
          // Compare this article date with previous article date to determine if we should start a new date header
          if (!empty($onDate) // We have previous articles to compare with
              && ($thisDate->format('l d F') == $onDate)) // This article date matches previous so keep in same group
          {
              echo $news['title'];
          } else { // No existing articles or new date = new header
              $onDate = $thisDate->format('l d F'); // See options: http://www.php.net/manual/en/function.date.php
              echo $onDate
              echo $news['title'];
          }
      
      }
      

      【讨论】:

      • 嗯,这对我也有帮助,唯一的问题是第一天没有出现,但第二天出现了。
      • 我修复了这个例子,$onDate = $thisDate-&gt;format... 应该在else 声明中声明它。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2020-10-22
      相关资源
      最近更新 更多