Member 12827990 Ответов: 1

Sql-запрос для фильтрации данных в HTML-таблице


Мне нужно создать форму поиска, где пользователи могут искать по любому ключевому слову. Но прямо сейчас, когда поиск пользователя его не работает.

Я пытаюсь проверить свой код в поисковой части sql запроса простым запросом типа

SELECT * FROM `course` WHERE CONCAT(`id`, `name`, `department_id`, `course_desc`,`hidden_id`) LIKE '%".$valueToSearch."%' 

и это работает. Итак, я знаю, что моя проблема заключается только в sql-запросе для поисковой части. но я все еще не знаю, как решить свою проблему. Кто-нибудь может мне помочь.

Что я уже пробовал:

if(isset($_POST['search']))

    {
      $valueToSearch = $_POST['valueToSearch'];

      $sql = "select  	
			s1.id		as id,
			s1.name		as name,
			s2.name 	as department_id,
			s1.course_desc 	as course_desc,
			s3.name as hidden_id
	from 		
			course  as s1
	left join	department as s2
		on	s1.department_id=s2.id
	left join hidden as s3
		on	s1.hidden_id=s3.id
      WHERE CONCAT(`id`, `name`, `department_id`, `course_desc`,`hidden_id`) 
      LIKE '%".$valueToSearch."%' 
      LIMIT $start_from, $per_page";
      $result = $mydb->query($sql);
    }

Suvendu Shekhar Giri

"Итак, я знаю, что моя проблема заключается только в sql-запросе для поисковой части"
Что такое поисковая часть?
Вы имеете в виду WHERE пункт ?

Member 12827990

извините, я имею в виду sql part-select not where clause. Потому что,когда я пытаюсь выбрать все, это работает. но сейчас у меня есть несколько столов..

Member 12827990

это 3 таблицы в моей базе данных

таблица "курс"
| код | название курса | | department_id |course_desc| hidden_id |
|----|--------------|--------|---------------|----- |-----------|
| 1 / sme | b / 10 | bbbbbb | 1 |
| 2 / smu | a / 11 | aaaaaa | 2

таблица "отдел"
| код | наименование |jabatan_desc|
|----|-----------|----- |
| 10 / jabatan a | fka |
| 11 / джабатан б | ФКБ |

таблица "скрытая"
| код | наименование |
|----|-----------|
| 1 / показать |
| 2 / скрыть |

1 Ответов

Рейтинг:
2

Wendelius

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

Попробовать следующее:

$sql = "select  	
			s1.id		as id,
			s1.name		as name,
			s2.name 	as department_id,
			s1.course_desc 	as course_desc,
			s3.name as hidden_id
	from 		
			course  as s1
	left join	department as s2
		on	s1.department_id=s2.id
	left join hidden as s3
		on	s1.hidden_id=s3.id
      WHERE CONCAT(`s1.id`, `s1.name`, `s1.department_id`, `s1.course_desc`,`s1.hidden_id`) 
      LIKE '%".$valueToSearch."%' 
      LIMIT $start_from, $per_page";