Php 当用户已经创建时,如何将数据重新创建到用户中

Php 当用户已经创建时,如何将数据重新创建到用户中,php,mysql,loops,while-loop,Php,Mysql,Loops,While Loop,你好,希望你能帮我解决这个问题。我不知道当用户已经创建并且想要在教师创建另一个主题并将该主题添加到他们的日程中时循环所有用户id时,这是否可能。。这是我的问题,我会解释的 我创建了一个有年级、房间和科目的学生 输出 student_id | grade | room | subject 1 | 1st yr | rose | math 1 | 1st yr | rose | english 因此,学生1在1年级和rose教室创建了一门数学和英语课程 如果

你好,希望你能帮我解决这个问题。我不知道当用户已经创建并且想要在教师创建另一个主题并将该主题添加到他们的日程中时循环所有用户id时,这是否可能。。这是我的问题,我会解释的

我创建了一个有年级、房间和科目的学生

输出

student_id | grade  | room | subject 
1          | 1st yr | rose | math
1          | 1st yr | rose | english
因此,学生1在1年级和rose教室创建了一门数学和英语课程

如果老师想在第一年和玫瑰室创建或添加主题音乐学生,该怎么办。假设老师已经添加了这两个。所以期望输出是这样的

student_id | grade  | room | subject 
2          | 1st yr | rose | math
2          | 1st yr | rose | english
2          | 1st yr | rose | music
在创建一个学生和主题后,该表上的总体输出

student_id | grade  | room | subject 
1          | 1st yr | rose | math
1          | 1st yr | rose | english

2          | 1st yr | rose | math
2          | 1st yr | rose | english
2          | 1st yr | rose | music 
现在的问题是学生1没有音乐科目。 问题是如何在学生1
if已由教师创建。

将新主题添加到特定房间时,您可以执行以下操作:

  • 把那个房间里所有不同学生的名单列出来
  • 列出每个学生的所有科目
  • 如果学生没有最近添加的科目,请添加该科目
  • 尽管如此,就数据结构而言,您的数据库并没有从实体和关系中真正受益

    从你展示的内容来看,我想你对数据库这门学科还不熟悉。简单地说,我将做以下几点

    • 一个房间表,您可以在其中存储所有不同的房间
    • 一个主题表,您可以在其中存储所有不同的主题
    • 学生表格,可用于存储所有特定学生数据
    • 一个关系表主题如箭头所示可以将主题连接到房间。通过这种方式,您可以轻松定义哪个房间有哪些主题
    • 一个关系表SubjectsPerStudentPerRoom,基本上在这三个实体之间建立连接。如果您有SubjectsPerRoom表,则此表有点多余,但当特定学生可以有或没有特定主题时,您可以将其用于例外情况
    图表示例如下所示:

    例如,如果你想添加一个新的主题,你必须做如下操作

    插入“房间”(房间名称)值('rose');
    
    假设它返回ID=1

    插入“主题”(主题名称)值(“音乐”);
    
    假设它返回ID=34。然后将其分配给房间1

    插入'SubjectsPerRoom'(subject\u id,room\u id)值(34,1);
    
    现在您知道主题音乐已分配给房间罗斯。如果以后添加另一个房间或另一个主题,则可以使用相同的查询,只需创建这些实体之间的关系。这样,每个房间只有一个实例,您不需要重复信息,只需要将事物相互关联起来。正如您对问题的评论,这是数据的标准化

    然后,假设您添加了3名学生:

    插入'Students'(学生姓名)值('Tom');
    在'Students'(student_name)值('Jerry')中插入;
    在'Students'(student_name)值('Butch')中插入;
    
    让我们假设这些返回ID 1、2和3

    现在,你有一个房间,一个科目和三个学生。剩下的就是在学生房间主题之间建立关系

    插入SubjectsPerStudentPerRoom(学生id、科目id、房间id)值(1,34,1);
    在SubjectsPerStudentPerRoom(学生id、科目id、房间id)中插入值(2、34、1);
    在SubjectsPerStudentPerRoom(学生id、科目id、房间id)中插入值(3、34、1);
    
    现在你知道有三个学生被分配到roomrose学习主题音乐

    然后,如果你添加了一个新的主题。您将执行以下步骤:

  • 创建主题
  • 把它分配到房间里
  • 选择分配给roomrose的所有学生
  • 对于分配给roomrose的每个现有学生,添加与新科目的新关系
  • 插入'subject'(subject_name)值('english');
    
    假设返回35

    插入'SubjectsPerRoom'(subject\u id,room\u id)值(35,1);
    
    由于您没有向该房间添加新学生,而只是创建了该房间的主题并将其分配给该房间,因此您只需要创建房间之间的关系

    $query='SELECT*来自SubjectsPerStudentPerRoom,其中'room\u id`=1';
    //运行查询,假设该信息已分配给$students
    foreach($student作为$student){
    $query='插入SubjectsPerStudentPerRoom(学生id、科目id、房间id)值($student->student\id,35,1);';
    }
    
    然后,如果要选择分配给特定教室中特定班级的学生,可以执行以下操作:

    从SubjectsPerStudentPerRoom中选择*
    在student.student\u id=SubjectsPerStudentPerRoom.student\u id上加入学生
    其中SubjectsPerStudentPerRoom.room_id=1,SubjectsPerStudentPerRoom.subject_id=35
    
    这将给您分配到roomrose和subjectenglish的所有学生

    希望这能帮助你实现你想要的


    PS:这是有意简化的,但它应该引导您朝着正确的方向前进。

    如果这些表是数据库中的表,您应该在规范化后阅读!