2014-01-27 9 views
0

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

Флажки:

<form> 
Actie<input type="checkbox" name="genre" value="actie"> 
Sport<input type="checkbox" name="genre" value="sport"> 
<input type="submit" name="formSubmit" value="Submit"> 
</form> 

Как показать материал из базы данных:

$con->set_charset("utf8"); 
$result = mysqli_query($con,"SELECT Product,Prijs,Beschrijving FROM Producten order by  Product ASC LIMIT 0, 5"); 
echo '<table border="1px solid black" cellspacing="0" style="margin-top:47px"><tbody>'; 
while($row = mysqli_fetch_array($result)) 
{ 
echo "<tr>"; 
echo "<td rowspan='2' width= '200'>" . $row['Product'] . "</td>"; 
echo "<td><b>" . $row['Product'] . "</b></td>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>" . $row['Beschrijving'] . "&nbsp;<i>Prijs: &euro;&nbsp;" . $row['Prijs'] . " </i><br/><br/></td>"; 
echo "</tr>"; 

} 

Я знаю, что я могу использовать WHERE, чтобы показать только данные, которые я хочу, Я просто не знаю, как это сделать, только когда установлен флажок.

+0

Что будет столбец для фильтрации значения CheckBox? – Rikesh

+0

Значение chackbox находится в столбце под названием Genre – EerlijkeDame

ответ

0

Попробуйте это:

if($_POST['genre']!=""){ 
$query="SELECT Product,Prijs,Beschrijving FROM Producten order by WHERE genre=".$_POST['genre']." Product ASC LIMIT 0,5"; 
} 
else{ 
$query="SELECT Product,Prijs,Beschrijving FROM Producten order by Product ASC LIMIT 0,5"; 
} 
$con->set_charset("utf8"); 
$result = mysqli_query($con,$query); 
echo '<table border="1px solid black" cellspacing="0" style="margin-top:47px"><tbody>'; 
while($row = mysqli_fetch_array($result)) 
{ 
echo "<tr>"; 
echo "<td rowspan='2' width= '200'>" . $row['Product'] . "</td>"; 
echo "<td><b>" . $row['Product'] . "</b></td>"; 
echo "</tr>"; 
echo "<tr>"; 
echo "<td>" . $row['Beschrijving'] . "&nbsp;<i>Prijs: &euro;&nbsp;" . $row['Prijs']."</i><br/><br/></td>"; 
echo "</tr>"; 

} 
+0

Я пробовал это. Когда я ничего не проверю, я получаю: Примечание: неопределенный индекс: жанр в /var/www/games.php в строке 49 ---> if ($ _ POST ['genre']! = "") { Когда Я проверяю поле, которое я получаю: Примечание: Преобразование строки в строку в /var/www/games.php в строке 50 ---> $ query = "SELECT ...... И я получаю: Предупреждение : mysqli_fetch_array() ожидает, что параметр 1 будет mysqli_result, boolean задан в /var/www/games.php в строке 58 ---> while ($ row = mysqli_fetch_array ($ result)) – EerlijkeDame

0

Вы можете проверить, имеет ли жанр значение или установлено.

if ($_POST['genre'] != "") 
{ 
    ... 
} 

или

if(isset($_POST['genre'])) 
{ 
... 
} 
0

Вам нужно что-то вроде этого:

$sql = "SELECT Product,Prijs,Beschrijving FROM Producten"; 
if(isset($_POST['genre'])){ 
    $sql .= " WHERE Producten.`genre` IN ("; 
    $genres = implode(',', $POST['genre']); 
    $genres = "'" . str_replace(",", "','", $genres) . "'"; 
    $sql .= $genres; 
    $sql .= ")"; 
} 

$sql .= " order by Product ASC LIMIT 0, 5"; 
$result = mysqli_query($con, $sql); 

Во-вторых, вам нужно заменить

Actie<input type="checkbox" name="genre" value="actie"> 
Sport<input type="checkbox" name="genre" value="sport"> 

с

Actie<input type="checkbox" name="genre[]" value="actie"> 
Sport<input type="checkbox" name="genre[]" value="sport"> 
Смежные вопросы