Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 28 мар 2024, 16:54

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Поиск по сайту
СообщениеДобавлено: 20 дек 2012, 15:49 
Не в сети
Бывалый

Зарегистрирован: 21 май 2012, 20:54
Сообщения: 81
Условие - таблица должна быть MyISAM, колонки поиска проиндексированы(FULLTEXT).

Форма

Код:
 <form action='/search'>
            <input name="text" type="text">
            <input type="submit" value="GO" >
         </form>



Контроллер

Код:
class Controller_Search extends Controller_Template
{
   

    public function action_search()
   {

      $search = !empty($_REQUEST['text']) ? mysql_real_escape_string(trim(strip_tags($_REQUEST['text']))) : NULL;
      
       $content = View::factory('/pages/do_search');

     if (empty($search) || strlen($search) < 4) /*Как вариант,можна вывод ошибок сделать и по-другому*/
      {
        $meta = "Поисковый запрос не введён, либо он менее 4-х символов";
      }
      else
      {
          $meta = "Поиск по запросу -  $search";
      }
        $sql = "SELECT * FROM table WHERE MATCH(title) AGAINST('$search') LIMIT 20";//title колонка таблицы поиска
      $query = DB::query(Database::SELECT, $sql)
                  ->execute();

                  $cat = $query->as_array();

              $this->template->title = "Поиск по запросу -  $search";
              $content ->cat = $cat;
                                  $content ->meta = $meta;
              $this->template->content = $content;
   }
}



Файл вида do_search


Код:
<h2><?php if (isset($meta))  {echo $meta;}?></h2>
 <?php
            if (!empty($cat))

        foreach($cat as $art):
            ?>
/*Чего то выводим!!!!*/

<?php endforeach;  else echo "<h1 align='center'>Информация по запросу не найдена</h1>";?>




Роут


Код:
Route::set('do_search', 'search(/<artname>)', array('artname' => '.*')) // stuff
    ->defaults(array(
    'controller'  => 'search',
    'action' => 'search',
        ));

_________________
Меньше кода -> меньше ошибок


Последний раз редактировалось websto 28 дек 2012, 14:17, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 27 дек 2012, 10:49 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Зачем вам фреймворк, если вы его не используете?
Это не пример кода - это безобразие.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 28 дек 2012, 12:56 
Не в сети
Бывалый

Зарегистрирован: 21 май 2012, 20:54
Сообщения: 81
Извините уважаемый что не соответствую вашим представлениям правильного кодинга!Не все такие умные как вы,есть люди из средними способностями и даже ниже среднего.Это рабочий код, как пример может кому-то пригодится.А вообще что не так,то что я не использовал хелперы и валидатор?Объясните дураку!

_________________
Меньше кода -> меньше ошибок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 28 дек 2012, 13:16 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Я не писал о "своих представлениях правильного кодинга"
Вы его оформите для начала, чтобы можно было прочитать (это по поводу безобразия)
Для кода есть тег [ code=php ]...[/code] (без пробелов перед скобками)
Цитата:
А вообще что не так

- mysql_real_escape_string (http://kohanaframework.org/3.2/guide/da ... ameterized)

- $search = !empty($_REQUEST['text']) ? mysql_real_escape_string(trim(strip_tags($_REQUEST['text']))) : NULL;
Для этого есть хелпер $search = trim(strip_tags(Arr::get($_GET, 'text')));, где уже проверяется наличие $_GET['text'] и возвращает NULL если нет

- Зачем if (empty($search) || strlen($search) < 4) если запрос потом все равно выполняется

- Зачем if (isset($meta)) - если он всегда установлен

Код:
<h2><?php echo $meta ?></h2>

<?php if (empty($cat)): ?>

    <h1 align='center'>Информация по запросу не найдена</h1>

<?php else: ?>

    <?php foreach($cat as $art): ?>

        /*Чего то выводим!!!!*/
        <h3><?php echo $art['title'] ?></h3>

    <?php endforeach ?>

<?php endif ?>

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

А код рабочий, я не спорю)
Давайте вы наведете порядок в нем учитывая пожелания, а потом его приведем (если понадобится) в оптимизированное решение готове для использования.

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 28 дек 2012, 16:18 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
В общем понятно: "а нас - рать!", главное работает)
После праздников и бодуна выложу стандартный пример для поиска (тем более prickle тоже решала и решила, насколько я знаю) ).

_________________
http://de-en.info (работает на Kohana 3.3)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 28 дек 2012, 20:23 
Не в сети
Бывалый

Зарегистрирован: 21 май 2012, 20:54
Сообщения: 81
В принцепе вы правы - главное работает,естетическая красота для меня на втором плане.

Цитата:
Зачем if (empty($search) || strlen($search) < 4) если запрос потом все равно выполняется


Вы знаете как работает MATCH AGAINST ?

Не вижу большой разницы между

Код:
<?php if (empty($cat)): ?>

    <h1 align='center'>Информация по запросу не найдена</h1>

<?php else: ?>

    <?php foreach($cat as $art): ?>

        /*Чего то выводим!!!!*/
        <h3><?php echo $art['title'] ?></h3>

    <?php endforeach ?>

<?php endif ?>


и

Код:
<?php
            if (!empty($cat))

        foreach($cat as $art):
            ?>
/*Чего то выводим!!!!*/

<?php endforeach;  else echo "<h1 align='center'>Информация по запросу не найдена</h1>";?>

Это знаете как почерк он у каждого свой! И по-вашему получается если человек не использует некоторие хелперы значит фреймворк зря используется!?Это круто!!!Прежде всего я хотел передать сам алгоритм поиска,как вариант а с кодом можна делать что угодно,использовать хелпер или не использовать.Лично мне удобней так!Может вы не в курсе но Кохана от версии к версии обновляется и иногда бывает такое что в новой версии забудут добавить например какой небудь хелпер.

_________________
Меньше кода -> меньше ошибок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 30 дек 2012, 20:58 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
У Попова тоже код работает :)
Но его почему-то не любит большинство программистов и ненавидят те, кто потом разбирается в коде его последователей :)
Впрочем у всех нас поначалу код был далек от идеала. Постоянное совершенствование - в этом весь цимус.

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 04 янв 2013, 12:35 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
Не вижу большой разницы между
Ну не знаю, когда после кого-то такой код смотришь, думаешь, блин, неужели сложно нормально отступы хотя бы сделать, чтоб читать легко было. Ну это ваше дело, хотя, когда вы в код коханы смотрите там тоже так?) Вот бы они так писали, а вы вместо того, чтобы сразу увидеть что к чему искали где заканчивается, а где начинается строка (в принципе, в IDE это можно и выровнять быстро). Хотя это просто соглашение о нотации кода (но его не просто так придумали).
Цитата:
И по-вашему получается если человек не использует некоторие хелперы значит фреймворк зря используется!
А почему бы и не стараться использовать? Для этого же писали фреймворк? Я тоже не всё, естесственно, использую, но стараюсь, тем более, если это к стати и вы сами почти так написали)
Код:
    public static function get($array, $key, $default = NULL)
    {
        return isset($array[$key]) ? $array[$key] : $default;
    }
 
В вашем конкретном случае, вроде удобно использовать. Я это простое классное) решение использую, даже когда без фреймворка пишу)
Если начинаешь изучение, то о них можно элементарно и не знать. И как скзал admin: "у всех нас поначалу код был далек от идеала" Я подсказал, ну типа че не используете)).
И вы так "агрессивно" реагируете, вроде я от балды пишу какую-то хрень бесполезную и не нужную))
Код:
Вы знаете как работает MATCH AGAINST ?
Если честно, ни разу не использовал (не требовалось) Ну вроде представляю. Утверждать не буду, но если принимать настройки mysql по умолчанию, он не найдет строку < 3 или 4-х символов.
Ну я не к тому, а к тому, что если if (empty($search) || strlen($search) < 4) логично в else поместить и сам запрос.
Цитата:
Может вы не в курсе но Кохана от версии к версии обновляется и иногда бывает такое что в новой версии забудут добавить например какой небудь хелпер.
Да я не то что не в курсе, я вообще в шоке как она обновляется!)))) Я уже начал смотреть Laravel, то что видел - понравилось. Ну они (он) явно у коханы много позаимствовали) На рутрекере есть 2 видео обучалки (скачал чтоб быстро в курс дела войти). И то, что я писал сам для коханы, там уже есть и тоже все просто и лаконично.

_________________
http://de-en.info (работает на Kohana 3.3)


Последний раз редактировалось AmberLEX 08 янв 2013, 16:27, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 04 янв 2013, 20:18 
Не в сети
Бывалый

Зарегистрирован: 21 май 2012, 20:54
Сообщения: 81
Цитата:
Зачем вам фреймворк, если вы его не используете?
Это не пример кода - это безобразие.


Это по-моему тоже немного агрессивно.

Кохана меня тем и подкупила что это гибкий,легкий фреймворк,нет никаких строгих правил.Я уверен в одном, единственное что не изменится в Кохане - это сам ПХП.Да нужно использовать все возможности фреймворка,но это же не обязательно.На счет кода согласен,он далек от идеала. Основная цель была показать решение задачи,просто не встречал нигде "поиска", думал может кому-то пригодиться.

_________________
Меньше кода -> меньше ошибок


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поиск по сайту
СообщениеДобавлено: 26 мар 2013, 14:38 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
а как сделать так, чтобы не результат поиска выводился, а делался редирект на страницу с найденным материалом???


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 34 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group