我正在建立一个考试管理网站,我正在处理的一个页面是将学生添加到课程中。我有一个学生编号的下拉菜单(从表中获取值),但是我想这样做,以便当教师从下拉菜单中选择学生编号时,该学生的姓名和主要出现在下面的表格中。我有几乎所有的代码,但我似乎无法使它工作。它现在的方式显示了桌子的头部,但它没有显示任何线条。
我的下拉菜单代码:(工作正常)
<label class="control-label" for="number">Student Number</label>
<?php
$sql = "SELECT number FROM students";
$result = $conn->query($sql);
echo "<select class=".'"form-control"'.' id="number" name="number" for="number">';
while ($row = $result->fetch_assoc()) {
echo '<option value="' . $row['number'] . '">' . $row['number'] . "</option>";
}
echo "</select>";
?>
&#13;
我的表格代码:(仅显示表格的头部,这是我在移动代码并获得转换错误等后获得的最佳结果)
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Major</th>
</tr>
</thead>
<tbody>
<?php
$sql1 = "SELECT name FROM students WHERE number='$row'";
$result1 = $conn->query($sql1);
$value = $result1->fetch_object();
$sql2 = "SELECT major FROM students where number='$row'";
$result2 = $conn->query($sql2);
$value1 = $result2->fetch_object();
echo "<tr>
<td>".$value."</td>
<td>".$value1."</td>
</tr>";
?>
</tbody>
</table>
&#13;
感谢您的帮助!
答案 0 :(得分:0)
在我能够制定完整的答案之前,我必须告诉您代码中存在一些逻辑错误。
您的网页如何&#34;知道&#34;用户从select
中选择了一个选项?您应该截取事件并使用异步机制对此进行响应,例如:通过AJAX。
无论如何,当你只用一个查询时,不需要运行两个查询:
SELECT name, major FROM students WHERE number = ...
一旦您描述了解决问题#1的意思,我们就可以继续讨论完整的解决方案。
答案 1 :(得分:0)
好吧,我认为第二个片段中没有$行 您似乎没有将$ row从第1段传递到第2段。
您可以阅读:
PHP Pass variable to next page
您可以使用会话,cookie,获取和发布 或者只需使用“include”,然后您定义的变量就可以在第二页中使用。
serializeRowData
根据godzillante's answer below,mysql查询应该是这样的:
无论如何,当你只用一个查询时,就不需要运行两个查询:
SELECT name,major FROM学生WHERE number = ...
我注意到您使用$ row作为第二个查询的关键字
但是在第一个代码段中,您获取的数据是“$ row”(它是一个数组,请参阅PHP - fetch_assoc)
您应该使用$ row ['number']代替。