我想将通过使用php mysql(如下面的图片所示)获得的表转换为带有复选框的treeview,这是最好的方法。
到
这是我的代码:
<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>
<label>
<input id="xnode-0-1" data-id="custom-0-1" type="checkbox" value="<?php echo "$class_id"; ?>"/>
<?php echo $display_stu['st_class_name']; ?>
</label>
</li>
<?php }} ?>
结果- mytree
class_id和class_name与我的mysql表中的每个学生在一起
答案 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中,您必须伪造它。
供以后参考:很难从您的问题中猜测出您的真正问题是什么。绝对值得您花时间尝试更精确地提出问题。