Как сделать так чтоб search работала для таблиц movie и serial?

0

как можно реализовать поиск так чтоб искал вовсех таблицах а не только в movie?

у меня отдельно таблицы movie,serial,aniamtion?

codeigniter

3 ответов

1

Через UNION можно, такой синтаксиc на SQL:

SELECT name FROM movie WHERE `movie`.`name` LIKE '%Интерстеллар%'
UNION 
SELECT title FROM serial WHERE `serial`.`name` LIKE '%Интерстеллар%'

У меня нет таблицы serial, у меня как в уроках в movie и сериалы и фильмы. И есть как уроках posts таблица и в sql когда пробовал этот пример, писал вместо `serial`.`name` для posts - `posts`.`title`, получилось так:

Интерстеллар
Как снимали Интерстеллар

Первый - это для movie, второй для posts.

Ну и потом нужно из SQL переписать для PHP, примерно так:

<?php

$mysqli = new mysqli('127.0.0.1', 'root', '', 'kinomonster');

if (mysqli_connect_errno()) {
  print_f("Соединение не установлено", mysql_connect_error());
  exit();
}
$mysqli->set_charset('utf8');    

$sql = "SELECT movie.name as mname FROM movie WHERE `movie`.`name` LIKE '%Интерстеллар%'
        UNION 
        SELECT posts.title as ptitle FROM posts WHERE `posts`.`title` LIKE '%Интерстеллар%'";

$query = $mysqli->query($sql);

if ($mysqli->error) {
    echo "MySQL error: " . $mysqli->error;
}
$res = $query->fetch_all(MYSQLI_ASSOC);
// print_r($res);

?>

<?php foreach ($res as $key => $value): ?>
    <?php foreach ($value as $key2 => $value2): ?>
        <?php echo $value2; ?><br>
    <?php endforeach; ?>
<?php endforeach; ?>

Вывод в браузере:

Интерстеллар
Как снимали Интерстеллар
0
и все работает но что делать если у меня три таблицы  а не однa movie

Я же пример написал на две таблицы, третью таблицу также добавлять:

$sql = "SELECT movie.name as mname FROM movie WHERE `movie`.`name` LIKE '%Интерстеллар%'
        UNION 
        SELECT posts.title as ptitle FROM posts WHERE `posts`.`title` LIKE '%Интерстеллар%'
        UNION 
        SELET ЗАПРОС К ТРЕТЕЙ ТАБЛИЦЕ
        ..............
        UNION 
        SELECT ЗАПРОС К ТРЕТЕЙ ПЯТИСОТОЙ ТАБЛИЦЕ
";

Погугли UNION в SQL и как в codeigniter запросы sql делать почитай.

0
я создал модель как в видео

<?php

class Search_model extends CI_Model {

    public function search($q) {
        $array_search = array(
            'name' => $q,
            'descriptions' => $q
        );

        $query = $this->db
            ->or_like($array_search)
            ->limit(100)
            ->get('movie');

        return $query->result_array();

        
    }

}

потом контроллер как в видео
<?php

defined('BASEPATH') OR exit('No direct script access allowed');

class Search extends MY_Controller {

    public function __construct() {
        parent::__construct();
    }

    public function index() {
        $this->data['title'] = "Search";

        $this->load->model('search_model');
        $this->data['search_result'] = array();

        if($this->input->get('q_search')) {
            $this->data['search_result'] = $this->search_model->search($this->input->get('q_search'));
        }


        $this->load->view('templates/header', $this->data);
        $this->load->view('search', $this->data);
        $this->load->view('templates/footer');
    }
}
и все работает но что делать если у меня три таблицы  а не однa movie как указано в модели и в видео?
ищу фильмы на сайте все работает а ищу сериал или мультик не ищет так как в модели только одна таблица указана movie а уменя их 3: movie,serial,animation
как сделать так чтобы искал вовсех трех таблицах???
Sign up or Log in to write an answer