CodeIgniter Поиск по строке с помощью get

0

Я застрял в написании "Просмотр" для моей поисковой формы воспламенителя кода, которую нужно использовать get..

У меня в настоящее время это

контроллер

<?php
class Search extends CI_Controller {
    function __construct(){

        parent::__construct();

    }
    public function index(){
        $this->load->view('Search');
    }
    public function doSearch()
{
    $this->load->model("Messages_model");

    if ($this->input->get('search') !== FALSE) {
        $data ['results'] = $this->Messages_model->searchMessages($this->input->get('search'));
    } else {
        $data['results'] = array();
    }

    $this->load->view("Search", $data);
}

Модель

class Messages_model extends CI_Model{
function searchMessages($string){
    $this->load->database();
    $query = $this->db->query("SELECT * FROM messages WHERE text  LIKE '%$string%'");
    return $query->result();
}

Посмотреть

<!DOCTYPE html>
<html>
<style>
 </style>

<head>
    <title></title>
</head>
<body>
<form action="<?php echo site_url('Search/doSearch');?>" method = "get">
    <input type="text" name = "keyword"/>
    <input type="submit" value = "Search" />
</form>

</div>
</body>
</html>

Может ли кто-нибудь помочь мне в поиске строки поиска

  • 0
    Подсказка: прочитайте о сегментах URI ellislab.com/codeigniter/user-guide/libraries/uri.html
  • 0
    У вас на самом деле есть строка запроса в URL (то есть ?search=bob ) или вы хотите, чтобы поисковый термин шел после косой черты, например example.com/seach/bob ?
Показать ещё 3 комментария
Теги:
codeigniter
search

1 ответ

0
Лучший ответ

Во-первых, перейдите в application/config/config.php и найдите $config['allow_get_array'] и убедитесь, что он установлен в значение TRUE.

Тогда в вашем контроллере у вас будет что-то вроде этого:

public function search()
{
    $this->load->model("Messages_model");

    if ($this->input->get('search') !== FALSE) {
        $data ['results'] = $this->Messages_model->searchMessages($this->input->get('search'));

    } else {
        $data['results'] = array();
    }

    $this->load->view("Search", $data);
}

Обратите внимание, что в строке нет никакой проверки, поэтому вам нужно будет добавить свой собственный.

Надеюсь это поможет!

РЕДАКТИРОВАТЬ

Посмотреть файл:

<!DOCTYPE html>
<html>
    <style>
    </style>

    <head>
        <title></title>
    </head>
    <body>
        <form action="<?php echo site_url('search/doSearch'); ?>" method = "get">
            <input type="text" name="keyword" value="<?php echo isset($search_value) ? $search_value : ''?>"/>
            <input type="submit" value="Search" />
        </form>

        <?php
        if ($search_passed && !empty($results)) {
            foreach ($results as $result) {
                //Code for displaying results
            }
        } elseif ($search_passed && empty($results)) {
            echo 'No results found!';
        }
        ?>

    </div>
</body>
</html>

Метод контроллера:

public function doSearch() {$this-> load-> model ("Messages_model");

    if ($this->input->get('keyword') !== FALSE) {
        $data ['results'] = $this->Messages_model->searchMessages($this->input->get('keyword'));
        //Uncomment the line below to test
        // echo '<pre>'; print_r($data['results']);die('</pre>');
        $data['search_passed'] = TRUE;
        $data['search_value'] = $this->input->get('keyword');
    } else {
        $data['search_passed'] = FALSE;
        $data['results'] = array();
    }

    $this->load->view("Search", $data);
}
  • 0
    Большое спасибо, но как бы вы написали представление для этого? вот моя главная борьба .. я действительно не знаю, как заставить его использовать эту функцию
  • 0
    Вы знаете, как делать формы?
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню