2013-07-21 5 views
0

Учитывая базу данных MYSQL, где у меня есть таблица, содержащая множество записей, структурированных следующим образом:PHP-флажки для извлечения данных

строка | тип

Поле «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."; 
    } 
?> 

Проблема заключается в том, что этот код возвращает только тип значения а, б, в, г, а не строки записи в база данных.

Может ли кто-нибудь сказать мне, как реально получить доступ к моим записям в базе данных и получить строковое значение, которое соответствует проверяемому типу в форме? Спасибо!

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."; 
     } 
    ?> 
Смежные вопросы