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

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 に答える
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 に答える