Я пытался выяснить это уже несколько дней, но не смог найти решение. Скорее всего, из-за того, что я не думаю, что задаю правильный вопрос.
Вот идет ...
Я пытаюсь создать поиск на моем веб-сайте списка адвокатов.
Table 1
ID (primary)
Name
Category1 (fkey)
Category2 (fkey)
Category3 (fkey)
Category4 (fkey)
Category5 (fkey)
Location1 (fkey)
Location2 (fkey)
Location3 (fkey)
Location4 (fkey)
Location5 (fkey)
Table 2 - Locations
ID (primary)
Name
Table 3 - Categories
ID (primary)
Name
Таким образом, у адвокатов есть несколько категорий и несколько местоположений -> отношение «один ко многим» как с таблицей 2, так и с таблицей 3
Первый вопрос: Правильно ли настроена таблица 1? Нужно ли иметь несколько столбцов местоположения и категории (например, location1, location2, location3 и т. Д.)? Или я усложняю это?
Далее ...
Я хочу поиск в стиле флажков на моем сайте. Пользователь может выполнять поиск по местоположению и / или по категории. И с флажком они могут выбрать несколько мест и / или категорий. Значения флажков - это идентификаторы местоположений и категорий (не имена)
Таким образом, это может происходить тремя способами.
- Поиск по местоположению ТОЛЬКО
- Поиск по категориям ТОЛЬКО
- Поиск по категориям в пределах местоположения
У меня две проблемы.
- Я могу заставить сценарии 1 и 2 работать, но только если установлен ОДИН флажок.
- Я понятия не имею, как вообще начать работать над сценарием 3.
Вот что у меня есть для сценария 1 & 2
$AttorneyLocation = $_POST['AttorneyLocation'];
for ($i="0"; $i<count($AttorneyLocation); $i++) {
if (!is_numeric($AttorneyLocation[$i])) {
$AttorneyLocation[$i]="";
}
if (empty($AttorneyLocation[$i])) {
unset($AttorneyLocation[$i]);
}
}
$AttorneyLocation = implode (" OR ", $AttorneyLocation);
$sqlCommand = "SELECT att_id, att_name, att_logo, att_addy, att_town, att_profile_url FROM attorneys WHERE att_location1='$AttorneyLocation' OR att_location2='$AttorneyLocation' OR att_location3='$AttorneyLocation' OR att_location4='$AttorneyLocation' OR att_location5='$AttorneyLocation'";
Опять же, это работает, но только при установленном флажке ОДИН, сбой при выборе двух или более. Похоже, что он ищет только установленный флажок ПОСЛЕДНИЙ, игнорируя те, что перед ним.
Для сценария 3 - Опять же, я просто не уверен, с чего начать, как мне объединить поиск категории в поиске местоположения?
Если кто-то может указать мне правильное направление, это было бы здорово, спасибо большое! Это моя первая попытка создать что-то подобное!
Вот мой код формы, если необходимо - все создается динамически
<input type='checkbox' name='AttorneyCategory[]' value='$cat_id'> $category<br />
<input type='checkbox' name='AttorneyLocation[]' value='$loc_id'> $location<br />