PHP / MySQL поиск двух полей в одной таблице - PullRequest
1 голос
/ 17 июня 2011

Я создаю свой первый сайт на PHP / MySQL, и я хотел бы вернуть результаты поиска по двум полям одной таблицы в моей базе данных - Catagory и Location (Всего в таблице 15 полей, но есть толькодля поиска требуется два).

У каждой опции будет раскрывающееся меню, в котором будет указано фиксированное количество вариантов в каждом поле - например, вероятно, будет около 15 или около того Locations и 7 или 8 Catagories..

Я хочу, чтобы пользователь мог выбрать элемент из одного или обоих раскрывающихся меню, нажать кнопку «Поиск» или «@Go» и получить результаты.

Как уже упоминалось, я новичок в PHP / MySQL, поэтому прошу прощения, если мой вопрос немного «прост», и я надеюсь, что кто-то может направить меня в правильном направлении.

Спасибо Dan

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

Брэд, Коннер, у меня пока ничего нет, я в кругу с точки зрения специфики поискового запроса, я только начинаю исследовать, как это сделать, поэтому полное отсутствие кода в моем вопросеТион!

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

Другие поля в моей таблице не имеют отношения к поиску (зарплата, компания, контактный адрес электронной почты и т. Д.), Поэтому ... Я думаю, мне нужны только два запроса, и результаты также могут отображаться, если выотправьте только одну (например, вас не беспокоит место работы, только специальность, вы все равно можете найти все результаты и решить, хотите ли вы переехать).Это лучше или полезнее?

Спасибо за вашу помощь.Dan

Ответы [ 3 ]

1 голос
/ 17 июня 2011

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

if ( isset($_POST['go']) ){
      $location = $_POST['location'];
      $category = $_POST['category'];
      $sql = "SELECT * FROM table ID IS NOT NULL ";

      if ( $location !="" ){
           $sql .= " AND location = " . $location;
      }

      if ( $category !="" ){
           $sql .= " AND category = " . $category;
      }

}
1 голос
/ 17 июня 2011

Пользователь вводит поисковый запрос, и вы хотите выбрать строки из своей таблицы, которые содержат или точно соответствуют этому запросу?Если это так, то что-то вроде

Если category содержит $search_query

SELECT category, location 
FROM table 
WHERE concat(' ', category, ' ') LIKE '%$search_query%'

Или если это совпадение exact, вы бы использовали это вместо условного:

WHERE category = '$search_query'

Я, вероятно, не в курсе, вам нужно указать, как сказал Брэд

0 голосов
/ 17 июня 2011

Без каких-либо подробностей о структуре таблицы и данных, о которых идет речь, основы будут примерно такими:

SELECT ...
FROM ...
WHERE (field1 = $location_option) or (field2 = $category_option)
...