检索多个复选框,并在表中显示数据库中的其他相关信息


Retrieve multiple checkbox and display other related information from database in a table

我得到了这个从数据库打印出来的复选框列表。我能够从数据库中检索数据,如果用户使多个复选框并显示在表中,但我不能从数据库中检索其他信息,并显示在同一表中。

这是我的代码:

<table border='1'>
<tr>
<th>TITLE</th>
<th>PERCENTAGE RESULT</th>
</tr>
<?php 
if(isset ($_POST["submit1"]))
{
    $selectedcheckbox = $_POST["selectedcheck"];
    $query = "SELECT * FROM compareresult where subject=$selectedcheckbox";
   $sql_query = mysql_query($query) or die('Error 3 :'.mysql_error());
    while($data = mysql_fetch_array($sql_query,MYSQL_ASSOC)){
      $result=$data['result'];
    }
    foreach($selectedcheckbox as $title)
    {
       echo "<tr>";
        echo "<td>".$title."</td>";
       echo "<td>".$result."</td>";
    }           
        echo "</tr>";
}
?>

我想在用户选择多个复选框后显示结果,所以我写:

 echo $result in table

以便结果可以显示在所选标题旁边的表中,但我得到一个错误:

C:'xampp'htdocs'sam'c.p p在第31行错误3:未知列'数组'在'where子句'

我目前不在测试您的问题的环境中,我这样做是出于我的头脑,但尝试以下内容。

if(isset($_POST['submit1'])){
    $checkbox = isset($_POST['selectedcheck']) ? $_POST['selectedcheck'] : array();
    foreach($checkbox as $title){
        $query = "SELECT * FROM compareresult where subject='".$title."'";
        $result=mysql_query($query);  // <-- to avoid SQL injections, please change your method from mysql_query to mysqli_query (use the mysqli functions instead of mysql) 
        while($data = mysql_fetch_array($result)){
             $result=$data['result'];
             echo "<tr>";
             echo "<td>".$title."</td>";
             echo "<td>".$result."</td>";
             echo "</tr>
             }
        } 
   }

它首先检查你的复选框是否被选中,如果是,就把它放在一个数组中。然后运行foreach语句,将复选框的值设置为title。如果查询如果标题在数据库中,它会在那里运行,如果是,它会通过while循环输出。冲洗并重复,直到完成。

编辑

我看到你把你的open tableow语句放在foreach中,但是在foreach之外关闭了它。所以,要么你想把它全部打印在一行上,要么这是一个错误?如果它在一行上,请确保在while循环之前打开表行并在AFTER结束,否则就像我吐出的那样。