2012-09-26 56 views
0

我有一個查詢,讓我像下面這樣的結果時,我會打印出一張表:如何使一個良好的循環這個查詢結果

+---------------------------------------------------------------------+ 
| ID  | Name  | Color  |  Size  | Qty | 
+---------------------------------------------------------------------+ 
| 1  | First | Green  |  S  |  1  | 
| 2  | First | Green  |  L  |  2  | 
| 3  | First | Green  |  XL  |  1  | 
| 4  | First | Red  |  M  |  2  | 
| 5  | First | Red  |  L  |  3  | 
| 6  | Second | Blue  |  S  |  1  | 
| 7  | Second | Blue  |  M  |  4  | 
+---------------------------------------------------------------------+ 

現在我想打一個概述(在現實生活中,這些都是產品),其中某人可以點擊一個按鈕來編輯或刪除。我想遍歷其與foreach循環或東西,把它打印出來是這樣的:

+========================================================================+ 
| Name  | Color  |  Size  | Qty | Action  | 
+========================================================================+ 
| First | Green  |  S  |  1  | Edit|Delete | 
|    |    |  L  |  2  | Edit|Delete | 
|    |    |  XL  |  1  | Edit|Delete | 
+------------------------------------------------------------------------+ 
| First | Red  |  M  |  2  | Edit|Delete | 
|    |    |  L  |  3  | Edit|Delete | 
+------------------------------------------------------------------------+ 
| Second | Blue  |  S  |  1  | Edit|Delete | 
|    |    |  M  |  4  | Edit|Delete | 
+------------------------------------------------------------------------+ 

但不知何故,我不能讓我的身邊我怎麼會變成這樣循環程序頭。或者我應該改變查詢? 我希望有人能幫忙。如果您需要更多信息,請告訴我。

+0

這是在視圖編輯處理,並刪除應該是應該點一些控制器的方法,你可以編輯或刪除錨點。還提供每個記錄的ID作爲錨點中的第三個參數,並使用this-> uri-> segment(3) –

回答

0

你可以做一些這方面的數據庫,很可能使其更容易在你的代碼顯示的數據:

select 
    group_concat(ID) as id, 
    name, 
    color, 
    group_concat(size) as size, 
    group_concat(qty) as qty 
from 
    myTable 
group by 
    name, 
    color 

結果是這樣的:

ID  | name | color | size | qty 
1,2,3 | First | Green | S,L,XL | 1,2,1 
etc... 

現在你的代碼,這使得輸出你喜歡的方式更容易。

echo "<table>"; 
while($row=someFetchFromDatabase($results)) 
{ 
    echo "<tr><td>".$row['name']."</td><td>".$row['color']."</td>"; 
    $temp=explode($row['size']); 
    echo "<td>"; 
    foreach($temp as $val) 
    { 
     echo $val."<br>"; 
    } 
    echo "</td>"; 
    $temp=explode($row['qty']); 
    echo "<td>"; 
    foreach($temp as $val) 
    { 
     echo $val."<br>"; 
    } 
    echo "</td>"; 
    $temp=explode($row['IDs']); 
    echo "<td>"; 
    foreach($temp as $val) 
    { 
     echo "<a href='someLink.php?action=edit&ID=".$val."'>Edit</a> | <a href='someLink.php?action=delete&ID=".$val."'>Delete</a>"; 
    } 
    echo "</td></tr>"; 
} 
echo "</table>' 
+0

謝謝!這就是訣竅!我知道這將是一個非常簡單的解決方案。再次,謝謝! – Crinsane

0

我不會對查詢做任何事情。

在僞代碼(我不說話PHP)...

variables $name = "", $colour = ""; 
for (every row)  
    if (row.name = $name) and (row.colour = $colour) 
     display nothing for name and colour 
    else 
     display row.name 
     display row.colour 
     $name = row.name 
     $colour = row.colour 
相關問題