2016-01-07 65 views
0

數據我有這行的表:行與數據樣本PHP While循環:結合基於日期

rowAutoID, eventDate, eventTime, personID 

截圖:http://i.imgur.com/gHumbJE.png

,我想通過行循環,根據日期和personID將項目分組。

這是我目前有:

$query = "SELECT rowAutoID,eventDate,eventTime,personID FROM `PubEvent` "; 
$result = mysql_query($query); 

if ($result && mysql_num_rows($result)) { 
    while($obj = mysql_fetch_array($result, MYSQL_ASSOC)) { 
     echo '<tr><td>'.$obj["eventDate"].' '.$obj["eventTime"].'</td><td>'.$obj["personID"].'</td><td>status</td></tr>'; 
    } 
} 

它給了我這樣的:

+---------------------+------------+--------+ 
| 2015/10/05 05:27:24 | 0000000011 | status | 
+---------------------+------------+--------+ 
| 2015/10/05 05:40:24 | 0000000020 | status | 
+---------------------+------------+--------+ 
| 2015/10/05 06:01:23 | 0000000003 | status | 
+---------------------+------------+--------+ 
| 2015/10/05 11:49:51 | 0000000011 | status | 
+---------------------+------------+--------+ 

所以,如果我按日期(時間),我找的這個結局:

+-------------+------------+--------+----------+ 
| 2015/10/05 | 0000000011 | status | 05:27:24 | 
|    |   |  | 11:49:51 | 
+-------------+------------+--------+----------+ 
| 2015/10/05 | 0000000020 | status | 05:40:24 | 
+-------------+------------+--------+----------+ 
| 2015/10/05 | 0000000003 | status | 06:01:23 | 
+-------------+------------+--------+----------+ 

這樣,personID 0000000011在相同的日期和額外的專欄組本身獲得該日期/ personID的所有eventTime

注意:我不想更改我的SQL,因爲我將使用eventDate,eventTime來表示狀態,用戶權限和其他用途。

+0

嘗試編輯你的SQL使用'GROUP BY'條款。 – Joshua

+0

@Joshua我不想改變我的SQL,因爲我將使用eventDate,eventTime來表示狀態,用戶權限和其他用途。 – jQuerybeast

回答

1

使用while循環。你可以這樣做。試試吧..

$query = "SELECT rowAutoID,eventDate,eventTime,personID FROM `PubEvent` "; 
$result = mysql_query($query); 
$new_result = array(); 
if ($result && mysql_num_rows($result)) { 
    while($obj = mysql_fetch_array($result, MYSQL_ASSOC)) {   
     $date = date("Y/m/d", strtotime($obj["eventDate"])); 
     $time = date("H:i:s", strtotime($obj["eventDate"])); 
     $new_result[$obj["personID"]][$date]['date'] = $date; 
     $new_result[$obj["personID"]][$date]['time'] = $time; 
     $new_result[$obj["personID"]][$date]['id'] = $obj["personID"]; 
     $new_result[$obj["personID"]][$date]['status'] = "status"; 
    } 
} 
echo "<pre>"; print_r($new_result); 

希望它能幫上忙。

+0

嗯,我看到這可能導致,但每個ID只給我一次。我可以通過同一個PersonID在任何特定的日子裏進行很多活動。 – jQuerybeast

0

使用GROUP_CONCATGroup By EVENTDATE和PERSONID會給你所需的輸出

SELECT 
    eventDate, 
    personID, 
    GROUP_CONCAT(eventTime SEPARATOR '\n') 
FROM pubevent 
GROUP BY eventDate, personID; 
+0

這不是我想要的,因爲它以許多不同的方式使用eventTime。我所展示的是一個例子。 – jQuerybeast