Как вывести данные при фильтрации

karen12

Постоялец
Регистрация
26 Фев 2012
Сообщения
109
Реакции
4
Есть скрипт который фильтрирует данные из 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;
  }
?>
 
Смотря как создаётся подключение к БД

Код:
$result = $db->query($sql);
 
Назад
Сверху