使用PHP按周分组和显示MySQL条目

时间:2012-07-17 23:35:37

标签: php mysql

我希望按月和年分组显示它们,如下所示:

<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();
                }           
            }

我如何对它们进行分组,然后循环显示如上所示?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果我正确读取它,您可以合并两个选择并告诉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;
}

应该为您提供按年和月分组的三维条目数组。之后,您只需遍历$entries并显示已分组的数据。

如果您想要别的东西,请告诉我。