我的MySQL表中有一条记录,如:
ID Postcontent踵
1 A 2013-01-31
2 B 2013年1月31日
图3C二○一三年一月三十〇日
4 d二零一三年一月三十零日
5] E 2013年1月29日
6 F 2013年1月29日
我希望以类似
的方式展示它2013年1月31日
A
乙
2013年1月30日
C
d
2013年1月29日
电子
˚F
我能够像上面那样用group by显示,但是不能通过
在组中添加分页如果有人可以帮助我如何在分组中添加分页。
答案 0 :(得分:0)
你可以这样做:
while( $row = $query_prepared->fetch( PDO::FETCH_ASSOC ) )
{
if( $date <> $row['postdate'] )
{
echo '<br>' ,$row['postdate'];
}
$date = $row['postdate'];
echo '<br>' ,$row['Postcontent'];
}
并且不要将GROUP BY
放在SQL中,而是使用ORDER BY postdate DESC
或ASC。
以下是一个仅供理解的例子:
$testData = array
(
array('1','A','2013-01-31'),
array('2','B','2013-01-31'),
array('3','C','2013-01-30'),
array('4','D','2013-01-30'),
array('5','E','2013-01-29'),
array('6','F','2013-01-29')
);
$date = '';
foreach( $testData as $data )
{
$row = array();
list( $row['d'] ,$row['Postcontent'] ,$row['postdate'] ) = $data;
if( $date <> $row['postdate'] )
{
echo '<br>' ,$row['postdate'];
}
$date = $row['postdate'];
echo '<br>' ,$row['Postcontent'];
}
这将输出:
2013-01-31
A
B
2013-01-30
C
D
2013-01-29
E
F
答案 1 :(得分:0)
这个怎么样?
确保在(postdata,Postcontent)上建立索引后期或甚至索引以获得覆盖索引
请注意,有些人会认为这是错误的,因为您现在使用SQL格式化(HTML),但使用此方法可以获得更清晰的客户端代码
运行此查询..
SELECT
postdate
, GROUP_CONCAT(Postcontent SEPARATOR '<br />') 'postcontent_formatted'
FROM
your_table
GROUP BY
postdate DESC
PHP代码
<?php
while( $row = $query_prepared->fetch( PDO::FETCH_ASSOC ) ) {
echo $row['postdate'] . '<br />';
echo $row['postcontent_html_formatted'] . '<br />';
}
?>