- Автор темы
- #1
Есть скрипт который фильтрирует данные из mysql, нашел из интернета, но не знаю как вывести данные при фильтрации, поскольку выводит только текст виде запроса, вот код.
Для начала должна быть таблица, по которой будет идти поиск. Пусть это будет упрощённая таблица для ноутбуков:
Для начала должна быть таблица, по которой будет идти поиск. Пусть это будет упрощённая таблица для ноутбуков:
- id - уникальный идентификатор.
- price - цена.
- manufacturer - производитель.
- wi-fi - наличие Wi-Fi.
HTML:
<form name="form" action="" method="post">
<table>
<tr>
<td>Цена от:</td>
<td><input type="text" name="price_start" /> рублей</td>
</tr>
<tr>
<td>Цена до:</td>
<td><input type="text" name="price_end" /> рублей</td>
</tr>
<tr>
<td colspan="2">Производитель</td>
</tr>
<tr>
<td>Apple</td>
<td>
<input type="checkbox" name="manufacturers[]" value="1" />
</td>
</tr>
<tr>
<td>Acer</td>
<td>
<input type="checkbox" name="manufacturers[]" value="2" />
</td>
</tr>
<tr>
<td>ASUS</td>
<td>
<input type="checkbox" name="manufacturers[]" value="3" />
</td>
</tr>
<tr>
<td>Наличие Wi-Fi:</td>
<td>
<input type="checkbox" name="wifi" />
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="filter" value="Подобрать ноутбуки" />
</td>
</tr>
</table>
</form>
PHP:
<?php
function addWhere($where, $add, $and = true) {
if ($where) {
if ($and) $where .= " AND $add";
else $where .= " OR $add";
}
else $where = $add;
return $where;
}
if (!empty($_POST["filter"])) {
$where = "";
if ($_POST["price_start"]) $where = addWhere($where, "`price` >= '".htmlspecialchars($_POST["price_start"]))."'";
if ($_POST["price_end"]) $where = addWhere($where, "`price` <= '".htmlspecialchars($_POST["price_end"]))."'";
if ($_POST["manufacturers"]) $where = addWhere($where, "`manufacturer` IN (".htmlspecialchars(implode(",", $_POST["manufacturers"])).")");
if ($_POST["wifi"]) $where = addWhere($where, "`wifi` = '1'");
$sql = "SELECT * FROM `my_table`";
if ($where) $sql .= " WHERE $where";
echo $sql;
}
?>