用PHP排序MySQL数据

时间:2012-04-12 20:12:13

标签: php mysql

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

我到目前为止:

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

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

Photos

3 个答案:

答案 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>