使用MySQL和PHP显示和分组数据

时间:2016-04-07 13:15:35

标签: php mysql

我想要在我的页面上显示更新列表,但我想列出它们并按每天更新进行分组。

所以我希望它们看起来像

<tr>
   <td colspan=3>April 07 2016</td>
</tr>
<tr>
   <td>Update4</td>
   <td>Category</td>
   <td>Added By</td>
</tr>
<tr>
   <td>Update3</td>
   <td>Category</td>
   <td>Added By</td>
</tr>
<tr>
   <td>Update2</td>
   <td>Category</td>
   <td>Added By</td>
</tr>
<tr>
   <td colspan=3>March 29 2016</td>
</tr>
<tr>
   <td>Update1</td>
   <td>Category</td>
   <td>Added By</td>
</tr>

所以说我在这个日期添加3个更新,他们会在该日期显示,如果我在2天后添加2个更新,则会在该日期显示。

我在网上看过一些剪辑,我认为GROUP BY会起作用。

SELECT `title`, `addedby`, `description`, `date_added`
FROM updates WHERE `status`=1 GROUP BY MONTH(date_added)

2 个答案:

答案 0 :(得分:0)

你试试这个吗?

$query=SELECT `title`, `addedby`, `description`, `date_added`
FROM updates WHERE `status`=1 GROUP BY date(date_added)

如果你想显示那么你将需要这个

$result = $conn->query($sql)  
 if ($result->num_rows > 0) {
 while($row= $result->fetch_assoc())
{
 $title=$row['title'];
 $aded=$row['addedby'];
}

然后将这些变量放在要打印值的位置

答案 1 :(得分:0)

分组依据是聚合函数,例如。

select month(date_added), count(*) 
from updates 
WHERE `status`=1 GROUP BY MONTH(date_added);

not for conditional query like you want 

在你的情况下,你应该为你循环date_added值(下面的代码只是一个建议)

foreach ($Array_date_vales as $key => $value) {   

 "SELECT `title`, `addedby`, `description`, `date_added`
 where WHERE `status`=1 and MONTH(date_added) =  " . $value

}