0

我想显示我的用户的图片,按日期分组,就像我附加的图片一样。我需要做什么?

我到目前为止:

$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 |
|_____________________________________|

但是此代码仅显示用户收集的所有图像。我如何将它们分组?

相片

4

3 回答 3

1

将此添加到查询的末尾(针对您的特定查询进行调整):

ORDER BY date ASC

有关详细信息,请向我们展示您的查询和表描述或示例表行。

于 2012-04-12T20:15:31.587 回答
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>
于 2012-04-12T20:22:01.957 回答
0

如 dotancohan 建议的那样,将 ORDER BY date 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']而不用日期函数翻译它。

于 2012-04-12T20:21:45.683 回答