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

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 05 июл 2025, 14:53

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




Начать новую тему Ответить на тему  [ Сообщений: 12 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: ПОИСК
СообщениеДобавлено: 03 июн 2012, 21:16 
Не в сети
Бывалый

Зарегистрирован: 01 май 2012, 16:08
Сообщения: 32
КАК СДЕЛАТЬ ПОИСК в Kohana?
Помогите плиз :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 04 июн 2012, 04:22 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Поиск чего ? :)

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 11 июн 2012, 19:33 
Не в сети
Новичок

Зарегистрирован: 03 апр 2012, 15:43
Сообщения: 20
Если поможет вот как я делал
Код:
<?php defined('SYSPATH') or die('No direct script access.');
/*
 * Поиск
 */
class Controller_Index_Search extends Controller_Index {

    public function action_index() {
       
        if (isset($_POST['submit'])){
            $data = Arr::extract($_POST, array('search'));
                       
            $all_news = ORM::factory('new')
                ->or_where_open()
                ->where('title','like','%'.$data['search'].'%')
                ->or_where('intro','like','%'.$data['search'].'%')
                ->or_where('content','like','%'.$data['search'].'%')
                ->or_where_close()
                ->order_by('date', 'DESC')
                ->find_all();
        }

        $content = View::factory('index/search/v_search_index', array(
            'all_news' => $all_news,
            )
        );
                       
        // Выводим в шаблон
        $this->template->title = 'Поиск';
        $this->template->page_title = 'Поиск';
        $this->template->block_center = array($content);
       
    }


}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 22 сен 2012, 11:33 
Не в сети
Бывалый

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

$data = Arr::extract($_POST, array('search')); что это значит? извлечение массива данных из поля search, который находится в виде?

и как вывести результат поиска?


я сделала так (сильно не ругайте):

модель
Код:
<?php defined('SYSPATH') or die('No direct script access.'); //внутряняя кухня коханы отвечающая за безопасность
{
    Class Model_Search extends ORM {
   
    protected $_tableCustomer = 'customer';
   
 
    }
}


контроллер
Код:
<?php defined('SYSPATH') or die('No direct script access.'); //внутряняя кухня коханы отвечающая за безопасность

class Controller_Search extends Controller_Template {

    public function action_index() {
       
        if (isset($_POST['btnsrch'])){
            $data = Arr::extract($_POST, array('srch'));
                       
            $all_news = ORM::factory('search')
                ->or_where_open()
                ->where('fio','like','%'.$data['srch'].'%')
                ->or_where('adres','like','%'.$data['srch'].'%')
                ->or_where('tels','like','%'.$data['srch'].'%')
            ->or_where('info','like','%'.$data['srch'].'%')
                ->or_where_close()
              //  ->order_by('fio', 'DESC')
                ->find_all();
        }

       /* $content = View::factory('customerview', array(
            'all_news' => $all_news, */
            )
        );
                       
        // ������� � ������
     //   $this->template->title = 'Поиск';
     //   $this->template->page_title = 'Поиск';
     //   $this->template->block_center = array($content);
       
    }


}


вид
Код:
<table border="0" class="selectcustomer"> 
   <tr>
      <td>
   <form action="" method="post">
      <b>Поиск:</b> <input name="srch" type="text" style="width:250px" ><br>
      <p align="right"><input name="butsrch" type="submit" value="Найти" style="width:90px" height="50px"></p>
   </form> <br>
   
   <?php if(isset($data)) echo $all_news; ?>   
   
      </td>
   </tr>

</table>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 23 сен 2012, 15:12 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Цитата:
$data = Arr::extract($_POST, array('search')); что это значит?
Вы с такими вопросами поаккуратнее)

1. Идете в \system\classes\kohana\arr.php и там смотрите комментарий и пример использования
Код:
/**
 * Retrieves multiple keys from an array. If the key does not exist in the
 * array, the default value will be added instead.
 *
 *     // Get the values "username", "password" from $_POST
 *     $auth = Arr::extract($_POST, array('username', 'password'));
 *
 * @param   array   $array      array to extract keys from
 * @param   array   $keys       list of key names
 * @param   mixed   $default    default value
 * @return  array
 */
public static function extract($array, array $keys, $default = NULL)
{
    $found = array();
    foreach ($keys as $key)
    {
        $found[$key] = isset($array[$key]) ? $array[$key] : $default;
    }

    return $found;
}
 
2. Идете сюда http://kohanaframework.su/helpers/helpers_arr

Обычно задают вопрос, если не нашли ответа)
А отвечают охотнее, если видно, что это действительно вопрос или в этом сложно разобраться.

Т.к. в этом примере мы берем только одно значение из $_POST, то нагляднее и удобнее скорее так: $data = Arr::get($_POST, 'search');

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


Последний раз редактировалось AmberLEX 23 сен 2012, 16:09, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 23 сен 2012, 15:45 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
2prickle По поиску.
Смысл такой.
1. Вы водите в форме поиска слово и нажимаете поиск
2. В контроллере, в который вы попали после нажатия (который указали), из $_POST получаете это слово
3. Делаете запрос в базу к таблице (у вас почему-то ORM::factory('search')) в которой будете искать, подставляя в условие where по полю это слово
...
->where('fio', 'like', '%' . $peremennaja_v_kotoroi_soderjitsja_slovo_poiska . '%')
...
т.е. получим записи таблицы, где в поле `fio` есть значения, которые содержат часть или полное слово поиска.
Часть слова, т.к. про `like` и `%` читать в доках по MySQL ))

Если нужно, чтобы искало и в адресе, то добавляем условие
->or_where('adres', 'like', '%' . $data['srch'] . '%')
как вы и написали

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 25 сен 2012, 12:36 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
согласна вопрос про Arr::extract оказался глупый. постараюсь про такие вещи не спрашивать )

в общем проблема с выводом результатов (как всегда):
контроллер:
Код:
<?php defined('SYSPATH') or die('No direct script access.'); 

class Controller_Search extends Controller_Template {

    public function action_index() {
       
        if (isset($_POST['btnsrch'])){
            $data = Arr::extract($_POST,'srch');
                         
            $find = ORM::factory('customer')
                ->or_where_open()
                ->where('fio','like','%'.['srch'].'%')
                ->or_where('adres','like','%'.['srch'].'%')
                ->or_where('tels','like','%'.['srch'].'%')
            ->or_where('info','like','%'.['srch'].'%')
                ->or_where_close()
            ->order_by('fio', 'DESC')
                ->find_all();

      else
      {
         Session::instance()->set('er', 'Искомые данные не обнаружены');
      }
        }
   }
         
        $content = View::factory('customerview', array(
            'find' => $find,
            )
        );                 
     
        $this->template->content =$content;
       
    }

}


вид:
Код:
<table border="0" class="selectcustomer"> 
   <tr>
      <td>
   <form action="" method="post">
      <b>Поиск:</b> <input name="srch" type="text" style="width:250px" ><br>
      <p align="right"><input name="btnsrch" type="submit" value="Найти" style="width:90px" height="50px"></p>
   </form> <br>   
      </td>
   </tr>
</table>

                  
      <?php if(isset($find['srch'])); ?>   
    <?php foreach($find as $customer): ?> //естественно здесь вываливается ошибка Undefined variable: find
<table border="0" class="selectcustomer">
<tr><td>
       <b> Заказчик:   <?php echo $customer['fio']; ?><br> </b>    
</td></tr>
<tr><td>
        Адрес:         <?php echo $customer['adres']; ?> <br>
</td></tr>      
<tr><td>
        Телефоны:   <?php echo $customer['tels']; ?><br>
</td></tr>      
<tr><td>
        Дополнитпельная информация: <?php echo $customer['info']; ?><br>
</td></tr>
</table>      
      <?php endforeach; ?>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 25 сен 2012, 14:45 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Может стоит начать изучение с php?
1. Что такое ['srch'] в запросе? (по идее должно быть $data['srch'])
2. В if (isset($_POST['btnsrch'])){ я не нашел закрывающей скобки
3. Откуда возьмется переменная для 'find' => $find, если условие if (isset($_POST['btnsrch'])) не выполнится?
4. Что такое <?php if(isset($find['srch'])); ?> в шаблоне и где endif?
5. Ошибку выдавать должно еще в строке где 'find' => $find, и она указана номером

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 25 сен 2012, 17:05 
Не в сети
Бывалый

Зарегистрирован: 17 сен 2012, 13:35
Сообщения: 91
д, собственно с этого-то все и начиналось, а тут нашёлся морковин со своими уроками по php/kohan'е и понеслось.

на контроллер вообще не ругается. а особенно на 'find' => $find

по 1. вернула как было в начале (тут уже пляски с бубном, хз вообще зачем убрала)
по 2. знакомьтесь - моя невнимательность когда всавляла else
по 3. действительно откуда она возмётся?
4. это мои потуги на вывод результатов. тут я хотела сказать: если поиск прошёл удачно то вывести результат поиска.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: ПОИСК
СообщениеДобавлено: 25 сен 2012, 17:37 
Не в сети
Бывалый
Аватара пользователя

Зарегистрирован: 05 июн 2012, 03:08
Сообщения: 213
Скачайте уж лучше тогда Школу программирования Кохана от А до Я там намного понятнее и структурированее)

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


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

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


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

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


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

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