[英]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.