2012-10-24 25 views
1

sql和php的新手,试图通过这个工作。在阅读了几个例子之后,我仍然无法完成这个任务。现在,我有以下查询从sql查询中显示一个标题和多个日期

$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类 开始日期的A类 开始日期1 名称的名称2 B类 开始日期B类的名称1 开始的名称日期2

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

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

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

Show year only once in archives loop

任何帮助,不胜感激!即使是在朝着正确的方向;-)

+0

你可能想澄清你正在使用的数据库(我假设MySQL?) – franglais

+0

是的。 SQL数据库 - 在运行Event Espresso的WordPress上设置 – user10660

回答

2

一个点,你可以调整你的循环是:

$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秒。

+0

感谢您的输入。我想要一次事件名称 - 我可以通过recurrence.id对GROUP BY执行此操作。但是,在每个事件名称下,我希望每个事件的实例的日期。即 事件名称 2012年10月25日 2012年11月7日 等 – user10660

+0

不知道你的SQL结构,我想我的答案是这样做的。或者你可以通过'group by'循环,然后为每个事件名称,查询该事件的所有日期。这将是更多的查询,从而在技术上更慢。 – Landon

+0

geez - 在底部错过了日期部分 - 完美的解决方案谢谢! – user10660