从sql查询中显示一个标题和多个日期

时间:2012-10-24 21:12:10

标签: php sql

sql和php新手并试图通过这个。在这里阅读了几个例子后,我似乎仍然无法完成这项工作。现在我有以下查询

$sql = "SELECT e.id, e.event_name, e.recurrence_id, e.start_date, e.venue_title FROM " . wp_events_detail . " e  WHERE e.recurrence_id <>0 or e.recurrence_id = 0 and is_active = 'Y' GROUP BY e.event_name, e.start_date"  ;
                $posts = $wpdb->get_results($sql);

                print("<ul>");
                foreach ($posts as $post)
                {
                    print('<li>'.$post->event_name.'|'.$post->event_desc.'<br/>');

                     print('</li>');
                    print($post->start_date. '~' .$post->venue_title.'<br/>'); 
                }
                print("</ul>");

这会产生 A类的名称 开始日期1 A类的名称 开始日期2 B类名称 开始日期1 B类名称 开始日期2

我想要的是什么 A类的名称 开始日期1 开始日期2

B类的名称 开始日期1 开始日期2

我知道我需要一个数组并定义行 - 尝试了几个没有运气的选项。不理解这个答案中定义的所有变量等(这似乎我想要这样做)

Show year only once in archives loop

任何帮助非常感谢!即使是正确方向的一点; - )

1 个答案:

答案 0 :(得分:2)

您可以将for循环调整为:

$lastseeneventname='';
foreach ($posts as $post){
   if($lastseeneventname!=$post->event_name){
      print('<li>'.$post->event_name.'|'.$post->event_desc.'<br/>');
      print('</li>');
      $lastseeneventname=$post->event_name;
   }
   print($post->start_date. '~' .$post->venue_title.'<br/>'); 
}

这只会打印一次新的event_name,这是我认为你想要的。