PHP / MYSQL - 从下拉菜单中获取数据库值,然后在同一页面

时间:2015-11-29 11:51:06

标签: php html mysql mysqli

我正在建立一个考试管理网站,我正在处理的一个页面是将学生添加到课程中。我有一个学生编号的下拉菜单(从表中获取值),但是我想这样做,以便当教师从下拉菜单中选择学生编号时,该学生的姓名和主要出现在下面的表格中。我有几乎所有的代码,但我似乎无法使它工作。它现在的方式显示了桌子的头部,但它没有显示任何线条。

  • 错误始终在我声明$ sql1和$ sql2的行中,并根据我在语句中定义条件的方式而有所不同。

我的下拉菜单代码:(工作正常)



<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;
&#13;
&#13;

我的表格代码:(仅显示表格的头部,这是我在移动代码并获得转换错误等后获得的最佳结果)

  • 错误始终在我声明$ sql1和$ sql2的行中,并根据我在语句中定义条件的方式而有所不同。

&#13;
&#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;
&#13;
&#13;

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

在我能够制定完整的答案之前,我必须告诉您代码中存在一些逻辑错误。

  1. 您的网页如何&#34;知道&#34;用户从select中选择了一个选项?您应该截取事件并使用异步机制对此进行响应,例如:通过AJAX。

  2. 无论如何,当你只用一个查询时,不需要运行两个查询:

    SELECT name, major FROM students WHERE number = ...
    
  3. 一旦您描述了解决问题#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']代替。