我想显示我的用户图片,按日期分组,就像我附上的图片一样。我需要做什么?
我到目前为止:
$connect= //connection info;
$query= "SELECT * FROM posts WHERE user_id= $user_id AND picture= IS NOT NULL ORDER BY date DESC";
$result= ($connect, $query);
while ($row= mysqli_fetch_array($result)) {
echo '<img src="'.$row['picture']. '"/>' . "<br/>";
};
我的桌子结构:
| user_id | post_date | story | image |
|-------------------------------------|
| 14 | mar 2012 | BLOB | a.jpg |
| 14 | apr 2012 | BLOB | b.jpg |
| 14 | feb 2012 | BLOB | c.jpg |
| 14 | mar 2012 | BLOB | d.jpg |
|_____________________________________|
但此代码仅显示所有用户收集的图像。我该如何分组?
答案 0 :(得分:1)
将其添加到查询的末尾(针对您的特定查询进行调整):
ORDER BY date ASC
有关更多详细信息,请向我们展示您的查询和表格说明或示例表格行。
答案 1 :(得分:0)
按照dotancohan的建议,将ORDER BY日期DESC(似乎已经有)添加到查询的末尾,并使用带有时间检查的for循环,例如
$date = "0";
while ($row= mysqli_fetch_array($result)) {
if (date('dmY', $date) != date('dmY', $row['date'])) {
echo "<p> NEW ROW, DATE: $row[date]</p>";
$date = $row['date'];
}
echo '<img src="'.$row['picture']. '"/>' . "<br/>";
}
代码假设您在mysql中的日期是以纪元格式(从1970年1月1日开始的整数秒)。似乎你只把月份和年份作为字符串,然后在if语句中使用 $ date!= $ row ['date'] 而不用日期函数进行翻译。
答案 2 :(得分:0)
在您的SQL查询中,从您的日期中提取月份和年份,如下所示:
SELECT *, MONTH(date_field) AS month, YEAR(date_field) AS year FROM table
ORDER BY date_field DESC
然后在你的php视图中执行以下操作:
<div class="month-wrap">
<? $i = 0; foreach ($data as $item){ ?>
<? if ($i > 0 && $last_month != $item['month'] && $last_year != $item['year']){ ?>
</div><div class="month-wrap">
<?= $item['month'] ?>, <?= $item['year'] ?>
<? } ?>
<? if ($i == 0){ ?>
<?= $item['month'] ?>, <?= $item['year'] ?>
<? } ?>
<img src="<?= $item['image'] ?>" />
<?
$last_month = $item['month'];
$last_year = $item['year'];
?>
<? $i++; } ?>
</div>