2

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

例子:

在此处输入图像描述

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

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

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

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

}

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

4

4 回答 4

1

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

$date = "";
while ($news = mysql_fetch_array($query)) {
    if ($news['datetime'] != $date) {
        $date = $news['datetime'];
        echo $date;
    }
    echo $news['title'];
}
于 2013-03-20T19:35:46.830 回答
0

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

$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>';
}

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

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

于 2013-03-20T19:43:03.250 回答
0

我不确定我是否完全理解您要完成的工作。为了让您的数据像您包含的图像一样显示,您需要在 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'];
    }

}
于 2013-03-20T19:43:48.327 回答
0

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

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日期

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

于 2013-03-20T19:36:26.903 回答