如何将表格转换为树状视图?

时间:2018-10-13 09:34:08

标签: php html mysql ajax

我想将通过使用php mysql(如下面的图片所示)获得的表转换为带有复选框的treeview,这是最好的方法。

table.png

TreeView tree.png

这是我的代码:

<h4>Select Students</h4>
<table class="table table-bordered" id="example">
 <thead>        
  <tr>
   <th>#</th>
   <th>Class</th>
   <th>Roll/SL No.</th>
   <th>Adm No.</th>
   <th>Student Name</th>
   <th>Father Name</th>
  </tr>
 </thead>
<?php
$result = mysqli_query($conn7,"SELECT * FROM student_info WHERE school_id='$school_id' order by st_class_name ASC, roll_no + 0 ASC, st_name ASC");
while($row = mysqli_fetch_assoc($result)){
?>
   <tr>
      <td><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<?php echo $row['st_id']; ?>"></td>
      <td><?php  echo $row["st_class_name"]; ?></td>
      <td><?php  echo $row["roll_no"]; ?></td>
      <td><?php  echo $row["admission_no"]; ?></td>
      <td><?php  echo $row["st_name"]; ?></td> 
      <td><?php  echo $row["father_name"]; ?></td>
    </tr>
    <?php } ?>
</table>

我尝试过的新代码-

<?php
$prev_class_id = 1;
$sql_query_stu = mysqli_query($conn7,"SELECT * FROM student_info where school_uni_id='$school_uni_id' order by st_class ASC, roll_no + 0 ASC, st_name ASC"); 
while($display_stu = mysqli_fetch_assoc($sql_query_stu)){
$class_id = $display_stu['st_class'];
$prev_class_id = prev($class_id);
$class_id = $display_stu['st_class_name'];

if($class_id != $prev_class_id){
?>
    <li>
        <i class="fa fa-plus fa-lg"></i>&nbsp;
        <label>
        <input  id="xnode-0-1" data-id="custom-0-1" type="checkbox" value="<?php echo "$class_id"; ?>"/>
        &nbsp;<?php echo $display_stu['st_class_name']; ?>
        </label>
    </li>
<?php }} ?>

结果- mytree

class_id和class_name与我的mysql表中的每个学生在一起

1 个答案:

答案 0 :(得分:0)

您的性能问题归因于嵌套数据库查询。您可以使用包含JOIN的单个查询来更好地做到这一点。我必须对查询进行猜测,因为您尚未显示表定义。

array = ["Add", "Subtract", "Divide", "Multiply"]
for i in range(1, 5):
    print(f"{i} - {array[i-1]}")

# 1 - Add
# 2 - Subtract                                                
# 3 - Divide                                                 
# 4 - Multiply                                     

然后您的php代码需要执行以下操作:

SELECT s.sub_cat_id,
       s.sub_cat_name.
       i.roll_no,
       i.st_name,
       i.st_mobile,
       i.st_dob 
  FROM all_services s 
 WHERE s.school_id='$school_id'
  JOIN student_info i ON s.sub_cat_id = i.st_class
 ORDER BY s.sub_cat_name,
          i.roll_no + 0 ASC, 
          st_name ASC;

关于$previous_class_id = -10000; $sql_query = mysqli_query($conn7,$the_query_above); while($display = mysqli_fetch_assoc($sql_query)) { $class_id = $display['sub_cat_id']; if ($class_id != $previous_class_id) { /* html for the checkboxes, etc for each class */ } /* html for the student details */ if ($class_id != $previous_class_id) { $previous_class_id = $class_id; /* html for the ends of lists of students </ul> </li> and the like */ } } 的逻辑使您可以按类分解结果的呈现。某些语言(例如$previous_class_id,请查找-)的

PL/1

但是在php中,您必须伪造它。

供以后参考:很难从您的问题中猜测出您的真正问题是什么。绝对值得您花时间尝试更精确地提出问题。