2010-02-13 7 views
0
$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>'; 

Ceci est un extrait d'un plugin que j'utilise. Il imprime la date de l'événement suivi de la description. Comment puis-je le modifier pour que tous les événements du jour soient imprimés ensemble en une seule liste?Afficher les événements de même jour (PHP/MYSQL)

Ceci est la fonction correspondante dans un fichier séparé:

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; 
    } 

Merci

Répondre

1

Vous pouvez les regrouper sous leurs valeurs de date.

$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; 
} 

qui vous laissera avec un tableau de tableaux d'événements organisés 'date' => Array($event, $event, ...).

De là, vous pouvez travailler avec toute la liste groupée:

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; 
    } 
} 

ou d'obtenir une liste d'événements pour une date précise:

$list = $event_groups['2010-02-13']; 
Questions connexes