0

次のように、月と年でグループ化して表示したいと思います。

<p>
    <div>August 2009</div>
     <div class="fav">title 1</div>
     <div class="fav">title 5</div>
     <div class="fav">title 6</div> 
    etc...
</p>

 <p>
    <div>July 2009</div>
     <div class="fav">title 3</div>
     <div class="fav">title 8</div>
     <div class="fav">title 9</div> 
    etc...
</p>

これが私のクエリです...

 $fav = mysql_query("SELECT * FROM links WHERE user_id='{$row['id']}' GROUP BY post_id ORDER BY id DESC");
    $TMPL = array (); $skin = new skin('mylinks/my'); $profile = '';

    while($myfav = mysql_fetch_array($fav))
    {
        $favs = mysql_query("SELECT * FROM imdb WHERE id='{$myfav['post_id']}' LIMIT 100");
            while($myfavs = mysql_fetch_array($favs))
            {   
                $TMPL['profiles'] = '<div class="fav"><a href="/movie/'.$myfavs['id'].'"><img src="/'.$myfavs['poster'].'" title="Posted '.$myfavs['date'].'" /></a></div>';
                $profile .= $skin->make();
                }           
            }

それらをグループ化し、ループして上記のように表示するにはどうすればよいですか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

私が正しく読んでいれば、2 つの選択をマージして、それらがどのグループに属しているかを SQL に知らせることができます。

SELECT *, YEAR(`date`) AS dy, MONTH(`date`) AS dm
FROM links
LEFT JOIN imdb WHERE imdb.id = links.post_id
WHERE links.user_id='{$row['id']}'
GROUP BY links.post_id
ORDER BY links.id DESC

その後、独自のエントリ グループを作成できます。

$entries = array();

while($entry = mysql_fetch_array($result))
{   
    $entries[$entry['dy']][$entry['dm']] = $entry;
}

これにより、年と月ごとにグループ化されたエントリの 3 次元配列が得られます。その後、$entriesグループ化されたデータをトラバースして表示するだけです。

他に欲しいものがあれば教えてください。

于 2012-07-18T12:58:44.260 に答える