不确定如何解决这个问题!我正在尝试创建一个学校课程评分图。我有一个包含4列和4行的表。课程水平和学生垂直。
这些列是从db生成的,如下所示:
<form action="insert.php" method="post">
<table>
<thead>
<tr>
<th>Name</th>
<?
$query = "SELECT classname FROM class ORDER BY cname LIMIT 3";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
$classid = $row['classid'];
echo '<th><div class="verticalText">'.$row['classname'].'</div></th>';
}
}
?>
</tr>
</thead>
现在,这就是我如何得到最直接的:
<tbody>
<?
$query = "SELECT studentid, studentname FROM students ORDER BY studentname";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_assoc()) {
$studentid = $row['studentid'];
echo '<tr>';
echo '<td style="text-align:left;"><a href="#">'.$row["studentname"].'</a></td>';
echo '<td>';
echo '<input type="text" name="grade" id="grade" placeholder="--">';
echo '</td>';
echo '</tr>';
}
/* free result set */
$result->free();
}
/* close connection */
$mysqli->close();
?>
</tbody>
</table>
<input type="submit" value="report" name="submit">
</form>
我的问题是。我如何在insert.php上将classid和studentid连接在一起,这样当我插入数据库时,我可以告诉每个学生有什么课程和成绩?
希望这有任何意义,并期待任何答案。
答案 0 :(得分:0)
首先,你的类表需要自动增量id,这样你就可以获得对类行的干净引用(基于名称的引用被认为是不好的做法),之后你需要添加一个包含3列的第3个表:class_id, student_id和成绩。如果您愿意,可以在student_id和class_id上添加组合主键,以便强制组合是唯一的。 (我认为这就是你想要的)
这种链接数据的方式称为关系数据库:https://en.wikipedia.org/wiki/Relational_database
此字段设置称为多对多关系:http://en.wikipedia.org/wiki/Many-to-many_(data_model)
// So your relational table will look like:
- student_id (part of primary key and foreign key that points to the student)
- class_id (part of primary key and foreign key that points to the class)
- grade
这里有很多值得学习的内容,看一下这些文章并有所了解。祝好运! :)