我想使用ComboBox从mysql搜索问题。如果我在ComboBox中选择第一章,我想显示的问题只有第一章。

在此假设我的第1章包含2个问题,第2章包含一些问题,依此类推。当我选择第1章时,则不会显示第1章所具有的问题。它只会打印上一章中的最后一个问题。我怎么解决这个问题?

 <?php

      $sql= "select distinct chapter from math";
      $q= mysql_query($sql);
      echo "<select name='fname'>";
      while($info=mysql_fetch_array($q)){
      $d1 = $info['chapter'];
      echo "<option> ".$info['chapter']."</option>";
      }
      echo "</select>";
      $sql1 = "select question from math where chapter=$d1";
      $sql1_res = mysql_query($sql1) or die(mysql_error());
      while($row = mysql_fetch_array($sql1_res)){
              $question=htmlspecialchars_decode($row['question'], ENT_QUOTES); // It gives only last question.
      echo $question;
      }
  ?>

最佳答案

您的错误是您从查询的最后一次迭代中选择章节时选择了问题。

...
while($info=mysql_fetch_array($q)){
  $d1 = $info['chapter'];
  echo "<option> ".$info['chapter']."</option>";
}
echo "</select>";
$sql1 = "select question from math where chapter=$d1";
...


将始终选择最后一章。但是你还有另一个问题。假设您要在用户从下拉列表中选择某个值时显示问题,则必须使用POST / GET / AJAX将选择发送回PHP,并根据该选择生成结果。像这样:

    if(!isset($_POST['fname']))
    {
       $sql= "select distinct chapter from math";
       $q= mysql_query($sql);
       echo "<select name='fname'>";

       while($info=mysql_fetch_array($q)){
         echo "<option> ".$info['chapter']."</option>";
       }
       echo "</select>";
    }
    else
    {
      $sql1 = "select question from math where chapter = " . $_POST['fname'];
      $sql1_res = mysql_query($sql1) or die(mysql_error());
      while($row = mysql_fetch_array($sql1_res)){
        $question=htmlspecialchars_decode($row['question'], ENT_QUOTES); // It gives only last question.
        echo $question;
      }
    }

关于php - 通过复选框从mysql检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18486364/

10-11 17:54