2013-08-28 31 views
1

我想使用ComboBox从mysql中搜索问题。如果我在ComboBox中选择第一章,我想要显示那个只有第一章有问题的问题。通过复选框从mysql中检索数据

在这假设我的第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;   
     } 
    ?> 

回答

0

你的错误在于你选择的是上一次查询迭代的问题,你选择了章节。

... 
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;   
     } 
    } 
0

在您的问题查询根据下面的代码改变而循环:

<?php  

     $sql= "select distinct chapter from math";   
     $q= mysql_query($sql);   
     echo "<select name='fname'>";  
     $d1 = array(); 
     while($info=mysql_fetch_array($q)){ 
     $d1[] = $info['chapter'];  
     echo "<option> ".$info['chapter']."</option>";   
     } 
     echo "</select>";   
     $sql1 = "select question from math where chapter IN ('".implode("','",$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;   
     } 
    ?> 

使$d1变量作为数组和改变问题的选择查询。

+0

他有括号,所以他不回应它的每一个迭代。 – Dexa

+0

@Dexa我的错误。我已经改变了我的答案。 –

0
<?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;   
     } 
    } 
    ?> 
0
$sql1 = "select question from math where chapter=".$d1;