2017-09-16 5 views
1

情報としてテーブルからMySQLからのデータを取得:メインカテゴリおよびその他のサブカテゴリとして

私は2つのテーブル 1. grading_main 2. grading_sub

grading_main

+-------------+-------------------+ 
| g_main_id | g_main_name | 
+-------------+-------------------+ 
|   1 | Responsibilities | 
|   2 | Skills   | 
|   3 | Efforts   | 
+-------------+-------------------+ 

grading_sub

を持っています
+-------------+---------------+--------------------+ 
| g_sub_id | g_sub_name | main_element_id | 
+-------------+---------------+--------------------+ 
|   1 | Quality  | 1     | 
|   2 | Treatment  | 1     | 
|   3 | Equipment  | 2     | 
+-------------+---------------+--------------------+ 

私はこれを使用します

取得:コードは、私はこのように何をしたいのか

$sql = "SELECT * FROM grading_sub s JOIN grading_main m ON s.main_element_id = m.g_main_id"; 

それらを一緒に参加するヘッダ

として g_main_name(要素の名前)と、チェックボックスなどのサブ要素をフェッチ

サンプル:出力

+-------------+----------------+-----------------------+ 
| g_main_id | g_main_name | g_sub_name   | 
+-------------+----------------+-----------------------+ 
|   1 |Responsibilities| checkbox() Quality | 
|    |    | checkbox() Treatment | 
+-------------+---------------+------------------------+ 

+-------------+---------------+------------------------+ 
| g_main_id | g_main_name | g_sub_name   | 
+-------------+---------------+------------------------+ 
|   1 | Skills  | checkbox() Equipment | 
|    |    |      | 
+-------------+---------------+------------------------+ 

私はトンを使用しました彼のコード:

$sql = "SELECT * FROM grading_sub s JOIN grading_main m ON s.main_element_id = m.g_main_id"; 
$run = mysqli_query($DBcon,$sql); 
while($rows = mysqli_fetch_assoc($run)){ 
    echo ' 
     <div class="row"> 
      <div class="col-md-12 col-sm-12 col-xs-12 with-margin"> 
       '.$rows['g_main_name'].' 
      </div>            
     </div> 
       <div class="col-md-3 col-sm-4 col-xs-6 with-margin"> 
        <input type="checkbox" class="flat" name="sub_elements[]" value="'.$rows['g_sub_id'].'"> '.$rows['g_sub_name'].' 
       </div> 
      ' ; 

} 

このような結果:

+-------------+----------------+-----------------------+ 
| g_main_id | g_main_name | g_sub_name   | 
+-------------+----------------+-----------------------+ 
|   1 |Responsibilities| checkbox() Quality | 
|   1 |Responsibilities| checkbox() Treatment | 
+-------------+----------------+-----------------------+ 

だから私は、彼らがg_main_id

でmain_element_idを介して接合することをテーブルヘッダーとしてgrading_mainとgrading_subテーブルのすべてg_sub_nameのg_main_nameを取得したいです質問

ありがとう、

+0

テーブルの回路図を追加してください。質問をよりわかりやすくするために、テーブルのいくつかの例の値を追加して、値を出力に表示する必要があるかどうかを示すことができます。 – Jeffrey

+0

私は問題をより明確にするために編集しました。 –

答えて

1

まずは、テーブルとサンプルを追加して質問を改善してください。

私が正しく理解していれば、そのヘッダーに属するX個のチェックボックスのあとに、1個のヘッダーを表示したいとします。

$sql = "SELECT * FROM grading_sub s JOIN grading_main m ON s.main_element_id = m.g_main_id"; 
$run = mysqli_query($DBcon, $sql); 

// First obtain all data and store it in an array. 
while($row = mysqli_fetch_assoc($run)) { 
    $data[ $row['g_main_name'] ][] = $row; 
} 


// Now use two loops to loop over the array. 
// The first one loops over the headers 
foreach($data AS $g_main_name => $subItems) { 
    echo ' 
     <div class="row"> 
      <div class="col-md-12 col-sm-12 col-xs-12 with-margin"> 
       ' . $g_main_name . ' 
      </div>            
     </div>'; 
    foreach($subItems AS $item) { 
    echo ' 
      <div class="col-md-3 col-sm-4 col-xs-6 with-margin"> 
       <input type="checkbox" class="flat" name="sub_elements[]" value="' . $item['g_sub_id'] . '"> '. $item['g_sub_name'] . ' 
      </div>'; 
} } 

注:テストされていないコード。私はあなたがそのアイデアを得ることを望みます。

+0

ありがとうそれは私のために完全に働いた:) –

関連する問題