Отображать события одного дня вместе (PHP / MYSQL) - PullRequest
0 голосов
/ 13 февраля 2010
$sidebarEvent = '<h4 class="scheduler_sidebar_link"><a href="{*URL*}#date={*DATE_SQL*},mode=month" target="_blank">{*DATE*}</a></h4>
                 <div class="scheduler_sidebar_text">{*TEXT*}</div>';

Это фрагмент из плагина, который я использую. Он печатает дату события с последующим описанием. Как мне изменить его так, чтобы все события одного дня печатались вместе в виде одного списка?

Это соответствующая функция в отдельном файле:

for ($i = 0; $i < count($events); $i++) {
        $event = $sidebarEvent;
        $start_date = str_replace("-", "/", $events[$i]->start_date);
        $start_date = date_parse($events[$i]->start_date);
        $start_date = mktime($start_date['hour'], $start_date['minute'], $start_date['second'], $start_date['month'], $start_date['day'], $start_date['year']);
        $start_date = date(get_option('date_format').' '.get_option('time_format'), $start_date);
        $event = str_replace("{*URL*}", $url, $event);
        $event = str_replace("{*DATE*}", $start_date, $event);
        $event = str_replace("{*DATE_SQL*}", $events[$i]->start_date, $event);
        $event = str_replace("{*TEXT*}", $events[$i]->text, $event);
        $final .= $event;
    }

Спасибо

1 Ответ

1 голос
/ 13 февраля 2010

Вы можете перегруппировать их под их значениями даты.

$event_groups = array();
foreach($events as $event) {
  if(!isset($event_groups[$event->start_date]))
    $event_groups[$event->start_date] = array();

  $event_groups[$event->start_date] = $event;
}

Это оставит вас с массивом организованных событий 'date' => Array($event, $event, ...).

Оттуда вы можете работать со всем сгруппированным списком:

foreach($event_groups as $date => $events) {
  for ($i = 0; $i < count($events); $i++) {
    $event = $sidebarEvent;
    $start_date = str_replace("-", "/", $events[$i]->start_date);
    $start_date = date_parse($events[$i]->start_date);
    $start_date = mktime($start_date['hour'], $start_date['minute'], $start_date['second'], $start_date['month'], $start_date['day'], $start_date['year']);
    $start_date = date(get_option('date_format').' '.get_option('time_format'), $start_date);
    $event = str_replace("{*URL*}", $url, $event);
    $event = str_replace("{*DATE*}", $start_date, $event);
    $event = str_replace("{*DATE_SQL*}", $events[$i]->start_date, $event);
    $event = str_replace("{*TEXT*}", $events[$i]->text, $event);
    $final .= $event;
  }
}

или получить список событий на конкретную дату:

$list = $event_groups['2010-02-13'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...