PHP复选框以检索数据

时间:2013-07-21 06:54:44

标签: php mysql checkbox

给定一个MYSQL数据库,我有一个包含许多条目的表,结构如下:

字符串|型

字段“type”在数据库中可以有4个值(a,b,c,d)。

我想使用复选框表单通过检查四个可能值之一来检索数据库中的所有字符串。

到目前为止我所拥有的只是这段PHP代码:

<?
$objConnect = mysql_connect("localhost","root","****") or die("No DB to select.");
$objDB = mysql_select_db("exercises");
$strSQL = "SELECT * FROM entries WHERE type = '".$_POST["type"]."'";
$objQuery = mysql_query($strSQL);
?>

<?
$checkbox = array();

if (isset($_POST["type"])){
 $checked = $_POST["type"];

foreach ($checked as $value) {
    echo "$value"."</br>";
}
}
else{
    echo "Please select at least one type.";
    }
?>

问题是此代码仅返回类型值a,b,c,d,而不返回数据库中条目的字符串。

有人可以告诉我如何实际访问我的数据库条目并检索与表单中的已检查类型相对应的字符串值吗? 谢谢!

PS:这是我正在尝试使用的格式的HTML:

<html>
 <head>
  <title>select</title>
  <META http-equiv="Content-Type" content="text/html; charset=latin-1">
 </head>
 <body bgcolor="#F5FAE6">
<center>
<h2><p align="center">Make your test</p></h2>
</center>

<br><br>

<form action="output.php" method="POST">
&#10004;&nbsp;Select the <b>type(s) of exercise</b> you need:<br /><br />

<table border="1" cellpadding='4' cellspacing='4' style='border-collapse: collapse' bordercolor='#9999DD'>
<tr><td><input type="checkbox" name="type[]" value="abc"/> multiple choice</td></tr>
<tr><td><input type="checkbox" name="type[]" value="error"/> mistake correction</td></tr>
<tr><td><input type="checkbox" name="type[]" value="cloze"/> cloze</td></tr>
<tr><td><input type="checkbox" name="type[]" value="makeq"/> make a question</td></tr>
<tr><td><input type="checkbox" name="type[]" value="trans"/> translate (IT-->EN)</td></tr>
</table>

<p align="center">
<input type="submit" name= "get" value="get your entries!"/>
</p>

</form>

</body>
</html>

2 个答案:

答案 0 :(得分:0)

问题是你回应的类型不是从mysql查询返回的结果..

您的代码应为

if (isset($_POST["type"])){
 while ($row = mysql_fetch_array($objQuery)) {
    echo $row['text']."<br />";  
}
else{
    echo "Please select at least one type.";
}

答案 1 :(得分:0)

我认为应该这样做

    <php
      if (isset($_POST["type"]))
      {
        $objConnect = mysql_connect("localhost","root","****") or die("No DB found");
        $objDB = mysql_select_db("exercises");
        $strSQL = "SELECT * FROM entries WHERE type IN(";
         foreach($_POST['type'] as $t)
         {
            $strSQL .="'".$t."',";
         }
         $strSQL=rtrim($strSQL,",").")";
         $objQuery = mysql_query($strSQL);
         while ($row=mysql_fetch_array($objQuery)) 
         {
         echo $row['type']."<br>";
         }
        mysql_close($objConnect);
       }
    else{
        echo "Please select at least one type.";
       }
     ?>