2017-01-05 303 views
1

我有兩個表;一種是類別,另一種是sub_category嵌套循環,但避免重複的第一個循環

首先,我想在類別以顯示所有項目,並存儲每個類別的值,然後顯示所有的- 行業標準與該類別,但該類別不應重複(它應該爲所有顯示只有一次子類別)。

this is the output

<?php 
    $abcd = $mysqli->query("SELECT * FROM categories;"); 
    while($obj = $abcd->fetch_object()) 
    { 
     $category = $obj->name; 
     $results = $mysqli->query("SELECT * FROM `sub-category` WHERE category = '$category';"); 
     while($omg=$results->fetch_object()) 
     { 
      echo $category. ' '.$omg->subcategory.'<br>'; 
     } 
     echo $omg->subcategory; 
    } 
?> 
+0

您的類別查詢更改爲類似SELECT * FROM不同類別 – xFighter

+0

和學習一些SQL,這是非常厲害的技能編寫偉大的軟件,這是非常容易學習http://www.w3schools.com/ sql/default.asp – xFighter

+0

@xFighter這將無法正常工作。簡單地說,每個類別可以有多個子類別。 「類別」關係已包含獨特的類別。 – user2864740

回答

1

創建subcats的陣列和內爆他們,你只在你想要他們得到的逗號。只在循環外打印$category

<?php 
    $abcd = $mysqli->query("SELECT * FROM categories "); 
    while ($obj = $abcd->fetch_object()) {     
     $category = $obj->name; 
     $results = $mysqli->query("SELECT * FROM `sub-category` WHERE category = '$category' ");  

     echo $category.': '; 

     $subcats = array(); 
     while ($omg = $results->fetch_object()) { 
     $subcats[] = $omg->subcategory; 
     } 

     echo implode(',', $subcats).'<br>'; 
    } 
?> 
0

使用簡單的JOIN

<?php 
    $abcd = $mysqli->query('SELECT DISTINCT categories.name,sub-category.subcategory FROM `categories` JOIN `sub-category` ON category.name = categories.category;'); 
    while($obj = $abcd->fetch_object()) 
    { 
     echo $obj->name.' '.$obj->subcategory.'<br>'; 
    } 
?>