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
任何帮助非常感谢!即使是正确方向的一点; - )
答案 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
,这是我认为你想要的。