2014-04-23 30 views
0

我需要從數組數據中檢索多個唯一值。目前他們提取如下:對來自SQL的另一個數組輸出的信息進行排序

while($row1 = mysql_fetch_array($result1)) 
    { 

    echo "<tr>". 
      "<td>".$row1[0]   . "</td>". 
      "<td>".$row1[1]   . "</td>". 
      "<td>".$row1[2]   . "</td>". 
      "<td>".$row1[3]   . "</td>".   
      "<td>".$row1[4]   . "</td>". 
      "<td>".$row1[5]   . "</td>". 
      "<td>".$row1[6]   . "</td>". 
      "<td>".$row1[7]   . "</td>". 
//$row1[8] is the number of hours 
      "<td>".$row1[8]   . "</td>". 
//$row1[9] is the user 
      "<td>".$row1[9]   . "</td>"; 
      } 

如上所述,我需要積累每個用戶的小時數。但是,我有排序數組的問題,因爲用戶值必須在數組中唯一,而數字必須保持堆疊。

現在非常困惑。欣賞提供的任何幫助。

編輯:$ row1 [8]是一個整數是。

的採樣數據輸出表(對不起沒有圖像)將如下:

------------------------------------------------------------------------------------------ 
Users |Telephone | Address | Postal Code | Hobbies | Interest| FB |Twitter | Insta | Hours 
------------------------------------------------------------------------------------------ 
John | 92238726 | SG  | 345322  | Running | Movies | 1 | 0 | 0  | 5 
Tom | 922382134 | MY  | 345212  | Soccer | Movies | 1 | 0 | 0  | 8 
Jerry | 92238726 | SG  | 342122  | stamps | Nil | 0 | 1 | 0  | 5 
John | 92238726 | SG  | 345322  | Running | Movies | 1 | 0 | 0  | 12 
Jerry | 92238726 | SG  | 342122  | stamps | Nil | 0 | 1 | 0  | 2 

基於輸出以上,其與mysql_fetch_array萃取,我想的信息進行排序,以類似的以下:

Users | Total Hours 
John | 17 
Tom |  8 
Jerry | 7 

SQL代碼:

"select DISTINCT jl.refno, jl.logno, jl.attendee, jl.jobsummary, FROM_UNIXTIME(jl.date, '%d/%m/%y') AS 'Date-In', from_unixtime(jl.dateout + (15*3600), '%d/%m/%y') AS 'Date-Out', @timein := (left(jl.timein,2)*60+right(jl.timein,2)) AS 'Time-In', @timeout := (left(jl.timeout,2)*60+right(timeout,2)) AS 'Time-Out', @temp := ((dateout -date)* 24 * 60) + @timeout - @timein AS 'temp', us.username from joblog jl, projects proj, users us where jl.project ='{$value}' AND proj.id ='{$value}' AND jl.staff = us.id" 
+0

什麼是您的數據看起來像$ ROW1 [8],它是一個整數?你想如何排序?任何樣本數據和顯示? –

+0

你的桌子結構+更多的編碼真的會有所幫助..這就像是要求人們使用他們的玻璃球,希望我們能看到你的未來。 – Naruto

+0

見編輯。非常感謝 ! –

回答

0

既然你無論如何都使用MySQL,我建議你用SQL來做。它更乾淨。

編輯您的查詢:

SELECT users, SUM(hours) as total FROM userTable GROUP BY users ORDER BY total DESC; 

更新 - PHP版:

你可以像下面這樣做在PHP。

$counters = array(); 
while ($row1 = mysql_fetch_array($result1)) { 
    $counters[$row1[9]] += $rows1[8]; 
} 

arsort($counters); 

foreach ($counters as $name => $total) { 
    // do your output here 
} 
+0

嗨,我現在的SQL是相當複雜的做你的這個技巧。任何方式在PHP級別做?我在編輯中附加了我的SQL語句 –

+0

更新了我的答案。 –

+0

嗨@daniel cheng感謝您的回覆。結果怎麼都不是我想要的。我需要總時數累積。意思約翰有17個小時等等。這個代碼目前不允許。感謝您的幫助。 –

0
<?php 

function totalHours($user){ 
$result=mysql_query("select sum(hours) as total from table_name where users='".$user."'"); 
$row=mysql_fetch_array($result); 
return $row['total']; 
    } 

$result=mysql_query("select * from table_name group by users"); 
echo "</table>"; 
echo "<tr> 
<td>User</td> 
<td>Total Hours</td> 
</tr>"; 

while($row1 = mysql_fetch_array($result1)) 
    { 

echo "<tr>". 
     "<td>".$row1[0]. "</td>". 
     "<td>".totalHours($row1[0]). "</td></tr>"; 

     } 

     echo "</table>";    
?> 
+0

用你的表名替換table_name –

相關問題