我试图寻找解决问题的方法,但我不确定我在寻找什么,所以我没有太多运气。
我有一个简单的MySQL数据库,其中包含一个名为"活动"的表。在该表中,我有"start_date"、"activity_description"和"activity_location"字段。
我正在尝试使用 PHP 进行 MySQL 查询并按升序显示结果,但在同一日期的所有活动都用标题分隔。
例如,我正在尝试实现以下目标。
2012年05月03
日- 带狗遛狗
- 公园
- 出去吃饭
- 小意大利餐厅
2012年05月04
日- 获得汽车维修
- 约翰斯汽车和机械
2012年05月05日
- 做杂货店购物
- 生鲜超市
- 去看电影
- 超级丛影院
- 与山姆见面
- 墙杆上的洞
到目前为止,我已经发现MQSQL查询需要像这样:
$result = mysql_query("SELECT * FROM activities ORDER BY start_date ASC")
然后为了显示结果,我需要这样做:
while($row = mysql_fetch_array($result))
{
echo
'<strong>' .
$row['start_date'] .
'</strong>' .
'<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
}
这给出了这样的结果,为每个结果重复日期:
2012年05月03
日- 带狗遛狗
- 公园
2012年05月03
日- 出去吃饭
- 小意大利餐厅
2012年05月04
日- 获得汽车维修
- 约翰斯汽车和机械
2012年05月05日
- 做杂货店购物
- 生鲜超市
2012年05月05日
- 去看电影
- 超级丛影院
2012年05月05日
- 与山姆见面
- 墙杆上的洞
谁能给我一些提示,说明如何只对特定日期回显一次"start_date",然后在日期与上一个日期不同时再次回显?
任何提示,无论多么神秘,都将不胜感激。谢谢。
只需跟踪日期。
你定义一个日期,它不会像过去的日期那样出现,或者只是假的。
在日志中,您仅在日期更改时打印标题并保存新日期。就像这样:
$currentDate = false;
while($row = mysql_fetch_array($result))
{
if ($row['start_date'] != $currentDate){
echo
'<strong>' .
$row['start_date'] .
'</strong>' ;
$currentDate = $row['start_date'];
}
echo
'<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
}
问候斯特凡
可以这样做。
<?php
$data = array();
$result = mysql_query("SELECT * FROM activities ORDER BY start_date ASC")
while($row = mysql_fetch_array($result))
{
if(isset($data[$row['start_date']]))
{
$data[$row['start_date']][] = $row;
}
else
{
$data[$row['start_date']] = array($row);
}
}
?>
<ul>
<?php foreach($data as $date => $rows): ?>
<li>
<strong><?php echo $date; ?></strong>
<ul>
<?php foreach($rows as $row): ?>
<li><?php echo $row['activity_description']; ?></li>
<?php endforeach; ?>
</ul>
</li>
<?php endforeach; ?>
</ul>
试试这个,可能会起作用:
$last_date = '';
while($row = mysql_fetch_array($result))
{
$display_date = ($last_date == $row['start_date']) ? '' : $row['start_date'];
echo
'<strong>' .
$display_date .
'</strong>' .
'<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
$last_date = $row['start_date'];
}
$result = array();
while($row = mysql_fetch_array($result))
{
if (empty($result[$row['start_date']]))
{
$result[$row['start_date']] = array();
}
$result[$row['start_date']][] = array($row['activity_description'], $row['activity_location']);
}
foreach($result as $key=>$value)
{
echo
'<strong>' .
$key .
'</strong>';
foreach($value as $act)
{
'<ul><li>' .
$act[0] .
'</li><li>' .
$act[1] .
'</li></ul>';
}
}
将日期放在变量$date中,并检查日期是否更改了每一行。
$date = "";while($row = mysql_fetch_array($result)){
if ($date != $row['start_date'])
{
$date = $row['start_date'];
echo '<strong>'.$row['start_date'].'</strong>';
}
echo '<ul><li>'.$row['activity_description'].'</li><li>'.$row['activity_location'].'</li></ul>';
}
尝试这样的事情(我省略了一些样式添加以使其更清晰(:
$yourdate = '';
$output = '';
while($row = mysql_fetch_array($result)) {
if ($yourdate != $row['start_date']) {
$output .= $row['start_date'];
}
$output .= '<ul><li>' .
$row['activity_description'] .
'</li><li>' .
$row['activity_location'] .
'</li></ul>';
}
echo $output;