如何创建一个循环直到索引发生变化的 php 循环? 例如,如果索引是Student,数据列是该学生注册的所有类(class),我如何在当前学生旁边显示每个类(class),然后转到下一个学生并显示该学生的所有类(class)等等? 我完全陷入困境,我只需要一个想法来帮助开始。 我相信我需要一个 foreach 或 while 循环,即在 Student_id 未更改时显示类(class)。或者类似的事情,我已经被困在这里好几天了。我还有一个以一对多方式显示每个学生数据的元素,但是,由于这是一个多对多表,我为每个学生的类(class)创建了一个完整的单独表。
$get_student = "select * from students";
$run_student = mysqli_query($Conn, $get_student);
while($row_product=mysqli_fetch_array($run_student)){
$student_id = $row_product['ID'];
$student_name = $row_product['Name'];
$student_code = $row_product['Code'];
$student_image = $row_product['Image'];
echo "
<div class='' id='' >$student_id $student_name $student_code</div>
<br><br><br><br>
";}
基本上,我想从第二个表(包含类(class)的表)进行调用,并将它们与其他信息一起列在 div 中。 该表如下所示
ClassTable
ID-------Class
1--------101
1--------131
2--------555
3--------225
3--------146
3--------269
我真的需要有关如何开始这里的帮助,任何有关从哪里开始的帮助都会非常有帮助。
编辑: 好的,对于第一个表(一对多),结构是
ID(PK)
Name(index)
Code
Image
第二个(多对多)结构是:
TABLEID(PK)
Student_ID(index)
Student_Name(index)
Course
我在 phpmyadmin 设计器中在 ID 和 Student_ID 以及 Name 和 Student_Name 之间建立了关系。
我希望这能澄清结构。
编辑2
按照建议,我对上面的 php 代码进行了编辑:
/*$get_student = "select * from inventory";*/
$get_student = "SELECT s.ID, S.Code, s.Name,
(
SELECT
GROUP_CONCAT(c.Course SEPARATOR ', ')
from
mydatabase.coursetable c
where
c.Student_ID = s.ID
) as courses
FROM mydatabase.studenttable s" ;
但是,我收到以下错误
mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in C:\wamp64\www\...
最佳答案
我建议您改进查询,例如这样。
$query_string =
"SELECT s.ID, S.Code, s.Name,
(
SELECT
GROUP_CONCAT(c.Course SEPARATOR ', ')
from
yourdatabase.coursetable c
where
c.Student_ID = s.ID
) as courses
FROM yourdatabase.studenttable s
ORDER BY s.ID ASC
";
//Added ORDER BY to order the students from first id to last.
$actual_query = mysqli_query($conn,$query_string);
while($result = mysqli_fetch_assoc($actual_query)){
//do stuff with the result array
}
你最终应该得到像这样的数组:
$结果
[ID] => (1)
[代码] => (XY35XS)
[姓名] =>(无名氏)
[类(class)] => (101, 102, 103)
所以现在你可以像以前那样通过 foreach 或一段时间循环它。
稍微编辑了我的建议以包含 mysqli 部分。
关于PHP 循环数组直到索引改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51979265/