簡體   English   中英

Sql和php按發布的年,日和月對數據進行分組

[英]Sql and php to group data by posted year, day and month

我一直試圖根據發布的年份和月份來顯示來自數據庫的帖子,但由於我已經嘗試了所有可能的事情而無法做到這一點,但仍然認為這可以在SQL QUERY中完成並在PHP端支持它。 下面是我的數據庫結構

id  | title                |  date 
-------------------------------------------------
1   | hello this is a post | 2016-01-03 11:33 AM
2   | this is what i think | 2016-01-03 10:33 PM
3   | this is it           | 2017-14-06 06:33 PM
4   | Blah Blah Blah       | 2017-01-03 10:33 AM
5   | is what i think      | 2016-04-03 10:33 PM

現在我想以這種方式選擇和分組

您在2016-01-03發表的帖子

你好,這是一個帖子

這就是我認為你的

發表於2017-14-06

就是這個

您在2017-01-03發表的帖子

等等等等等等

您在2017-01-03發表的帖子

就是我的想法

我試着用波紋管代碼做這個

<?php
//I swear i don't know what else to do here
$db->prepare('SELECT * FROM post 
GROUP BY ("")
ORDER BY date');
$db->execute();
$output = $db->getAll();
$db->free();
if(!is_null($output)){
foreach($output as $row){
$title = $row->title;
$date = $row->date;

/* 
 Only this path i got near but i can only display post for this month using   $currentDate below.
But how can i get other once split according to date?
*/

$split = explode(" ", $date);
$currentDate = date('Y-m-d');
if($split[0] == $currentDate){
  echo 'post on '.$currentDate.'<br/>'.$title;
}else{
   echo 'post on '.$split[0].'<br/>'.$title;
 }
?>

你有三個要求。 一種是在沒有時間的情況下呈現帖子的日期。 第二種是按日期/時間訂購帖子。

這些可以通過這樣的查詢來完成。

SELECT DATE(`date`) as date, `title` FROM post ORDER BY `date`

GROUP BY沒有任何目的。

第三個要求是,對於連續的帖子來說,只提供一次日期。 這必須在php中完成。

$prev_date = "";
foreach ($output as $row) {
    $title = $row->title;
    $date = $row->date;
    if ($date != $prev_date) {
        echo "Posts on " .$date;
    }
    echo information about the post
    $prev_date = $date;
}

訣竅是使用我命名為$ prev_date的變量來檢測日期何時從一行變為另一行。

我最喜歡的方法是先將結果放入數組。

$date = date('Y-m-d', strtotime($row['date']));
$result[$date][] = $row['title'];

從上面的數組中,您可以使用foreach輸出結果。

foreach($result as $key => $value) {
    echo 'Your post on '.$key.'<br>';
    foreach($value as $k => $v) {
        echo $v.'<br>';
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM