2017-09-16 21 views
1

信息:从表作为主类别,另一个作为从MySQL获取数据的子类别

我有两个表 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 | 
+-------------+----------------+-----------------------+ 

所以,问题是我希望他们通过main_element_id加入了与g_main_id

去取表grading_main作为标题和grading_sub表的所有g_sub_name的g_main_name

谢谢,

+0

请添加您的表的原理图。为了让问题更容易理解,您可以为表添加一些示例值,并向我们展示如何在输出中显示值。 – Jeffrey

+0

感谢您的关注我已经做了一个编辑,使问题更加清晰。 –

回答

1

首先和最重要的:+1通过添加表和样本来改善问题!

如果我理解正确,您希望显示一个标题,然后显示属于该标题的X个复选框。

$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

非常感谢它为我工作:) –

相关问题