我想使用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/