Поиск данных из нескольких таблиц

  • Автор темы Rafo Sargsyan
  • 41
  • Обновлено
  • 13, May 2024
  • #1
Вот моя простая система поиска[http://108.60.222.225/data/

] Эта система ищет данные из указанной таблицы в указанном столбец
Теперь я хочу найти данные из другой таблицы, выбрав другую таблицу.

Вот мой код
Индекс.php

 <?php 

$connect = mysqli_connect("localhost", "data", "123456789", "data");

$output = '';

$sql = "SELECT * FROM gp_code WHERE name LIKE '%".$_POST["search"]."%'";

$result = mysqli_query($connect, $sql);

if(mysqli_num_rows($result) > 0)

{

$output .= '<h4 align="center">Search Result</h4>';

$output .= '<div class="table-responsive">

<table class="table table bordered">

<tr>

<th>Song Name</th>

<th>Singer Name</th>

<th>Code</th>

<th>Type</th>

<th>Mobile operator</th>

</tr>';

while($row = mysqli_fetch_array($result))

{

$output .= '

<tr>

<td>'.$row["name"].'</td>

<td>'.$row["art"].'</td>

<td>'.$row["code"].'</td>

<td>'.$row["type"].'</td>

<td>'.$row["compay"].'</td>

</tr>

';

}

echo $output;

}

else

{

echo 'Data Not Found';

}

?>
PHP: &amp; fetch.php
 <html> <head> <meta http-equiv="Content-Type" content="текст/html; кодировка = utf-8" /> <title>Simple search</title> <script src="js/jquery.js"></script> <script src="js/bootstrap.js"></script> <link href="css/bootstrap.css" rel="stylesheet" /> </head> <body> <div class="container"> <br /> <h2 align="center">My simple search system</h2><br /> <div class="form-group"> <div class="input-group"> <span class="input-group-addon">Search</span> <input type="text" name="search_text" id="search_text" placeholder="Поиск по имени клиента" class="form-control" /> </div> </div> <br /> <div id="result"></div> </div> </body> </html> <script> $(document).ready(function(){ $('#search_text').keyup(function(){ var txt = $(this).val(); if(txt != '') { $.ajax({ url:"fetch.php", method:"post", data:{search:txt}, dataType:"text", success:function(data) { $('#result').html(data); } }); } else { $('#result').html(''); } }); }); </script> 
PHP: вот мое изображение таблицы MySQL [все таблицы одинаковы другой имя типа gp_code,bl_code,cl_code,dl_code Но столбец такие же, как арт, код, компания, имя, тип и т. д.]

Итак, как это сделать

Rafo Sargsyan


Рег
29 Nov, 2011

Тем
1

Постов
1

Баллов
11
  • 20, May 2024
  • #2
хочу сделать вот так, а не это Глянь сюда http://108.60.222.225/data/

этот скрипт ищет из указанной таблицы или столбец . Но я хочу сделать так. В моей базе данных есть 3 таблицы, поэтому пользователь может искать данные из любой таблицы. как эта картинка.
 

mmasenko


Рег
01 Jan, 2011

Тем
0

Постов
3

Баллов
3
  • 28, May 2024
  • #3
Итак.

просто введите данные для поиска и выполните поиск по всем таблицам, которые хотите найти? Я правда не понимаю проблемы? Что-то вроде этого: (пример, а не фактический код)
 

SELECT

t1.*,t2.*,t3.*,t4.*

FROM {$dbprefix}users t1

LEFT JOIN {$dbprefix}user_settings t2 ON t1.user_id = t2.user_id

LEFT JOIN {$dbprefix}user_groups t3 ON t1.user_id = t3.user_id

LEFT JOIN {$dbprefix}groups t4 ON t3.group_id = t4.group_id

WHERE ((t1.fullname LIKE :searchvalue1 OR t1.loginemail LIKE :searchvalue2 OR t4.name LIKE :searchvalue3)) GROUP BY t1.user_id ORDER BY t1.fullname");



PHP: он выполняет поиск в нескольких разных таблицах (при этом присоединяясь к другим для получения дополнительной информации), и если ничего не найдено, он возвращает сообщение «ничего не найдено».

Однако для поиска по нескольким таблицам в рамках одного запроса вам потребуются «перехватчики», чтобы вы могли объединить их вместе.

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

Ali2045


Рег
05 Feb, 2013

Тем
0

Постов
2

Баллов
2
  • 01, Jun 2024
  • #4
Я немного в замешательстве.

Что именно вы хотите найти? Я понимаю, что вы сейчас ищете, например, певца, я думаю, по имени.

Вы хотите найти певца (например), а также что-то еще, например, конкретный альбом? Или что?

Кстати, вы используете mysqli_, и это хорошо, но то, как вы его используете, - это просто повтор использования mysql_, и запрос открыт для SQL-инъекции - НЕТ проверки или проверки значения, которое вы вводите в запрос.

, и вы не используете подготовленный запрос (в чем смысл использования mysqli_ или PDO). Но если вы просто хотите найти в нескольких таблицах результаты, содержащие одно из искомых слов (или несколько таблиц с одним искомым словом), вам просто нужно зациклить искомые значения.
 

Foxy1


Рег
26 Jan, 2014

Тем
1

Постов
3

Баллов
13
  • 03, Jun 2024
  • #5
Вам сказали, что делать, я правда не понимаю в чем проблема? Объедините таблицы (или, если между ними нет общей связи, например идентификатора, запустите запрос один раз для каждой таблицы) и выполните поиск по соответствующим столбцам в каждой таблице (убедитесь, что вы индексируете столбцы, в которых будете искать минимизируйте время на это) - не нужно добавлять подборку по исполнителю, песне или альбому?
 

MOSHENNIK


Рег
01 Jan, 2011

Тем
0

Постов
2

Баллов
2
Тем
49554
Комментарии
57426
Опыт
552966

Интересно