1

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

配列が必要で行を定義する必要があることはわかっています-いくつかのオプションを試してみましたが、うまくいきませんでした。この回答で定義されているすべての変数などを理解していません(これが私がやりたいことのようです)

アーカイブ ループで年を 1 回だけ表示する

どんな助けでも大歓迎です!正しい方向へのポイントでさえ;-)

4

1 に答える 1

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/>'); 
}

これは、新しいsを1回だけ印刷event_nameします。これは、私が思うに、あなたが望むものです。

于 2012-10-24T21:18:25.497 に答える