【问题标题】:Retrieve options for the second drop down box from DB based on first Drop down box根据第一个下拉框从数据库中检索第二个下拉框的选项
【发布时间】:2014-03-20 15:08:09
【问题描述】:

我目前正在做一个小项目。我必须从数据库(MySQL)中检索一些数据并将其作为选择(下拉框)插入网页。我用PHP写的代码是:

<?php
// Connect to the db.
require ('mysqli_connect.php');

// Make the query:
$q = "SELECT employee_name from employee where dept_id=3 ORDER BY employee_id ASC"; 

// Run the query.
$r = mysqli_query ($dbc, $q);

if ($r) // If it ran OK, display the records. 
{ 
     echo '<select name="employee_name">';

     // Fetch and print all the records:
     while ($row = mysqli_fetch_array($r)) 
     {
          echo '<option value="'.$row['employee_name'] . '>"'.$row['employee_name'] .'</option>';

     }
         echo "</select>";    

}

mysqli_free_result ($r); // Free up the resources.
mysqli_close($dbc); // Close the database connection.
?>

当我在 MySQL 控制台中执行查询时,它会返回正确的输出。 [这是五个名字的列表]。

你能帮我找出错误吗?

【问题讨论】:

  • 如果您收到正确的输出,您遇到的错误是什么?
  • 在 PHP 代码中,当我需要一个包含名称列表的下拉框时,我得到一个没有内容的简单下拉框。 imgur.com/1oiMKet">
  • 为什么要在 mysqli_query 前面使用 @ 来抑制错误?听起来您正在返回一个空结果。没有任何错误,这似乎是唯一有意义的事情。
  • @BarryDevSF :我停止抑制错误。尽管如此,没有错误也没有输出。

标签: php html mysql


【解决方案1】:

在循环中回显您的最终选择。

 while ($row = mysqli_fetch_array($r)) 
 {
      echo '<option value="'.$row['employee_name'] . '>"'.$row['employee_name'] .'</option>';

 }
 echo "</select>";

【讨论】:

  • 糟糕。那是错误的。但是,我仍然只得到一个空的下拉框。 imgur.com/TLyMRF1>
  • 查看html页面的下拉菜单,看看里面有没有数据。如果是这样,请尝试将 selected 添加到选项中。
  • 这就是我想要做的。我正在尝试将从数据库(通过查询)获得的数据插入下拉框中
【解决方案2】:

使用这个:

if ($r = @mysqli_query ($dbc, $q))
{
    echo 'select ....

由于$rSELECT 查询上与true 不同。

编辑

您将在while 的每次迭代中关闭select 标记。试试这样:

if ($r = @mysqli_query ($dbc, $q))
{ 
     echo '<select name="employee_name">';
     // Fetch and print all the records:
     while ($row = mysqli_fetch_array($r)) 
     {
          echo '<option value="'.$row['employee_name'] . '>"'.$row['employee_name'] .'</option>';
     }
     echo "</select>";                         
//   ^
//   |__  Now the </select> is out of the loop
}

【讨论】:

  • 我不明白这是如何工作的。在 if 语句中运行???而且,它与现有代码有什么不同。
  • 即使有了这个更正,我仍然得到一个空的下拉框。我没有任何内容。
猜你喜欢
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-04
相关资源
最近更新 更多