2012-08-30 5 views
0

전체 테이블을 표시하려고하지만 일 단위로 그룹화하려고합니다.일별 SQL 항목 표시

그래서

SELECT * FROM events ORDER BY event_date, event_time 

내가 그들을 좋아하는 것 한 후 다음과 같이 표시합니다.

<table> 
<th><?php echo date('W M D', strtotime($row->event_date)); ?></th> 
<tr> 
<td>Location Time Event</td> 
</tr> 

<th><?php echo date('W M D', strtotime($row->event_date)); ?></th> 
<tr> 
<td>Location Time Event</td> 
<td>Location Time Event</td> 
</tr> 
</table> 

하지만 어디서나 예제를 찾을 수 없습니다. 그룹화 및 합계 항목 만.

EDIT. 나는 요일을 추가하고 며칠 씩 항목을 표시하고 싶지 않습니다.

출력 예

September 8th 
-- Location Time Event 
-- Location Time Event 

September 9th 
-- Location Time Event 

October 10th 
-- Location Time Event 

EDIT 2.

재 작성 코드

<?php 
      require_once("config.php"); 
      $results = $db->get_results('SELECT * FROM events ORDER BY event_date, event_time'); 
      foreach($results as $row){ 
       $row->id // all the items are available as objects 
      } 
      $curr_date = '' 
      foreach($results as $row){ 
      if ($curr_date != $row->event_date){ 
      /* Handle the date’s title here */ 
      printf("<h1>%s</h1>", $row->event_date); 
      $curr_date = $row->date 
      } 
      /* Handle row items here */ 
      printf("<tr><td>%s</td><td>%s</td></tr>", $row->presenter , $row->location); 
      } 
      ?> 

여전히 오류가 발생. 이 오류는 예상치 못한 T_VARIABLE와 $ 로우 -> ID 여기 주위에 나타납니다

+1

당신은 그들을 통해 반복하고 당신이 PHP에서 그것을 수행하려는 경우, 배열에 추가 할 수 있습니다. 색인을 날짜로 만드십시오. $ events [$ row-> event_date] [] = $ row; 두 날짜가 같은 경우 함께 추가됩니다. – wesside

+0

또는 여러 개의 루프를 만들지 마십시오. 루프에서 if 절을 만들고 내용을 분할하는 데 필요한 날짜와 HTML을 출력하십시오. – ThoKra

답변

0

도움 주셔서 감사합니다.

코드 :

$results = $db->get_results('SELECT * FROM events ORDER BY event_date, event_time'); 
      $curr_date = ''; 
      foreach($results as $row){ 
      if ($curr_date != $row->event_date){ 
      /* Handle the date’s title here */ 
      printf("<h1>%s</h1>", $row->event_date); 
      $curr_date = $row->event_date; 
      } 
      /* Handle row items here */ 
      printf("<tr><td>%s</td><td>%s</td></tr></br>", $row->presenter , $row->location); 
      } 
0

어떻게 이런 일에 대해 :

$result = mysql_query("SELECT * FROM events ORDER BY event_date, event_time"); 
while($row = mysql_fetch_array($result)) { 
    $event_date = $row['event_date']; 
    $location_event = $row['some event']; 
    if ($event_date == $last_date) { 
     echo "<tr><td>$location_event</td></tr>"; 
    } else { 
     echo "<th>$event_date</th>"; 
     echo "<tr><td>$location_event</td><tr>"; 
    } 
    $lastdate = $event_date; 
} 
+0

While 루프를 입력하기 전에 $ last_date를 초기화하는'if ($ event_date == $ last_date) {' – shayward

+0

에 대해 UNDEFINED VARIABLE : LAST_DATE를 수신하여 첫 번째 값을 갖습니다. –

0

이 테스트를하지 않은,하지만 당신을 통해 반복 할 수있는 다차원 배열을 만듭니다 날짜와 그 이후의 시간.

$tempArray = array(); 

$query = "SELECT event_date, event_time FROM events ORDER BY event_date, event_time"; 
$result = mysqli_query($link, $query) or die(mysqli_error($link)); 

while($row = mysqli_fetch_array($result, MYSQLI_BOTH)) { 
    $event_date = $row[event_date]; 
    $event_time = $row[event_time]; 

    $tempArray[$event_date][] = $event_time; 
} 

foreach($tempArray as $k1=>$event_date) { 
    echo "<h1>$event_date</h1>"; 

    foreach($tempArray[$event_date] as $k2=>$event_time) { 
     echo "<p>$event_time</p>"; 
    } 
} 

mysqli_free_result($result); 

unset($tempArray);