2013-07-21 35 views
0

給定一個MYSQL數據庫,我有一個包含大量條目的表,結構如下:PHP複選框檢索數據

string |類型

字段「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> 
+0

數據庫連接到哪裏等? –

+0

你的數據庫連接/查詢代碼在哪裏? – Sean

+0

你甚至有一個SQL查詢?請顯示使用什麼SQL查詢您嘗試迄今爲止,或作爲前兩個意見建議,顯示使用您的連接 – Krimson

回答

0

的問題是,你是呼應類型不結果從MySQL查詢返回的..

你代碼應閱讀

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

什麼是錯誤?你能確認'$ _POST ['type']'是否包含任何值嗎? –

+0

你是說你的表單方法是GET而不是POST?似乎問題來自您的表單。 –

+0

如果我刪除WHERE條件,PHP代碼會返回數據庫中的所有條目,但我希望它只返回那些在表單中檢查到的具有「類型」的條目。 – Alex

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."; 
     } 
    ?>