如何创建一个循环直到索引更改的php循环? 例如,如果索引为Student,并且数据列是该学生注册的所有班级,那么我该如何在当前学生旁边显示每个班级,然后转到下一个学生并显示该学生的所有班级等等? 我完全陷入困境,我只需要一个想法就可以开始。 我相信我将需要一个foreach或while循环,即在不更改student_id的情况下显示类。或类似的东西,我已经被困在这里好几天了。我还有一个元素以一对多的方式显示每个学生的数据,但是,由于这是一个多对多的表,因此我为每个学生的班级创建了一个完整的单独的表。
$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>
";}
基本上,我想从第二个表中调用一个包含课程的表,并在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\...
答案 0 :(得分:0)
我建议您改善查询,诸如此类。
$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
}
您最终应该拥有如下数组:
$ result
[ID] =>(1)
[代码] =>(XY35XS)
[姓名] =>(John Doe)
[课程] =>(101,102,103)
所以现在您可以像以前一样在foreach中循环播放它。
稍微修改了我的建议,以包括mysqli部分。
答案 1 :(得分:0)
我不确定您的问题,但是尝试一下是否可行,请先从表中获取学生名单
$sql = "select id,Name from students";
$students = mysqli_query($Conn, $sql);
现在每个学生都需要课程吗?所以
foreach($students as $student){
echo $student[Name];
$sql = "select course from courses where Student_id = ".$student[id];
$studentCourse = mysqli_query($Conn, $sql);
foreach($studentCourse as $std)
{
echo $std[course];
}
}
希望这行得通。