<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Фильтр поиска на PHP

Фильтр поиска на PHP

Меня иногда просят рассказать, как делаются сложные фильтры поиска. Например, как он сделан на том же Яндекс.Маркете, где может быть сотня различных параметров отбора товаров? В этой статье я расскажу, как такое делается, ведь тут нет абсолютно ничего сложного. Всё это делается по единому принципу, о котором читайте дальше.

Для начала должна быть таблица, по которой будет идти поиск. Пусть это будет упрощённая таблица для ноутбуков:

  • id - уникальный идентификатор.
  • price - цена.
  • manufacturer - производитель.
  • wi-fi - наличие Wi-Fi.

Теперь разберём форму поиска:

<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>

Думаю, здесь, всё прозрачно. Единственное, что обратите внимание на manufacturers[]. Квадратные скобки означают, что в скрипт попадёт массив со всеми значениями, выбранными пользователем. Чтобы лучше это понять, просто выведите print_r($_POST), тогда Вы всё поймёте.

Теперь разберём скрипт. В целях упрощения скрипта я не стал его усложнять скриптами, отвечающими за безопасность, и ограничился функцией htmlspecialchars(). Однако, в реальности, обязательно надо проверять всё, что приходит от пользователя, используя, например, регулярные выражения и/или встроенные функции проверки переменных на их значение.

Главная задача скрипта - "собрать" SQL-запрос на основе того, что пришло от пользователя:

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

Думаю, что с выполнением получившегося запроса и выводом результата проблем возникнуть не должно. Если это не так или в данном скрипте не всё понятно, то Вам тогда однозначно нужно сначала изучить это: http://srs.myrusakov.ru/php.

Как видите, сложные фильтры реализуются в PHP очень просто. Что касается "красивых" скриптов, где двигаются всякие ползунки и сразу меняется результат - это всё то же самое, только запросы отправляются не через форму, а через Ajax, а затем принимается ответ от сервера с результатом, который динамически выводится через чистый JavaScript, либо с использованием jQuery.

Вот по такому принципу делается любой фильтр поиска на PHP.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (4):

malina95 malina95 07.02.2014 12:27:34

Миша, а будут ли статьи про MongoDB? Очень надо. И, есть идея нового курса - асинхронный интернет-магазин на MongoDB и NodeJS! Будет очень поучительно, и это будет первый курс в интернете!

Ответить

tikkiwiki tikkiwiki 12.02.2014 12:09:09

Возможно в скорости и будет.

Ответить

vaverkasuper vaverkasuper 31.05.2014 15:35:07

будет ли урок по созданию фильтрация по парамметрам для каждой категории меню отдельное? все это динамическим путем?

Ответить

SHOPPING SHOPPING 24.11.2014 15:00:05

Добрый день! Вы описали метод, когда в базе вбиты все параметры по столбцам id /price /manufacturer /wi-fi / а, можно ли реализовать фильтрацию при помощи поиска? Если даны к примеру столбцы /id /price и /charakteristiks , а данные /manufacturer и /wi-fi / введены текстом в поле /charakteristiks. Спасибо!

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.