1

ComboBoxを使ってmysqlから質問を検索したい。ComboBox でチャプター番号 1 を選択すると、チャプター 1 だけが持つ質問を表示したいと思います。

この場合、私の第 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;           
      } 
  ?>
4

4 に答える 4

0

質問クエリで、以下のコードに従って while ループを変更します。

<?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変数を配列にして、問題の選択クエリを変更します。

于 2013-08-28T11:21:27.140 に答える
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;           
         } 
    }
  ?>
于 2013-08-28T11:47:26.917 に答える
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;           
      } 
    }
于 2013-08-28T11:34:53.303 に答える
0
$sql1 = "select question from math where chapter=".$d1; 
于 2013-08-28T11:59:38.190 に答える