2017-01-05 5 views
1

私は2つのテーブルを持っています。 1つはカテゴリで、もう1つはsub_categoryです。ネストループですが、最初のループの繰り返しは避けてください

まず私はカテゴリ内のすべてのアイテムを表示し、各カテゴリの値を格納し、すべてのsub_categoriesそのカテゴリに関連を表示したいが、カテゴリが(それはすべてのために一度だけ表示されるべき繰り返してはなりませんサブカテゴリ)。

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

http://www.w3schools.com/ sql/default.asp – xFighter

+0

SELECT * FROMのようなものに自分のカテゴリのクエリを変更し、いくつかのSQLを学ぶ、素晴らしいソフトウェアを作成するために非常に強力なスキルであり、学ぶことは非常に簡単です – xFighter

+0

@xFighterそれは動作しません。たいていの場合、カテゴリごとに複数のサブカテゴリが存在する可能性があります。 'categories'関係には既にユニークなカテゴリが含まれています。 – user2864740

答えて

1

サブキャットの配列を作成し、それらを念入りに入れて、必要な場所にカンマを入れるようにします。ループの外側にある$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>'; 
    } 
?> 
がDISTINCTカテゴリ
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>'; 
    } 
?> 
関連する問題