Я делаю поиск в ресторане, в котором пользователи могут фильтровать поиск по многим критериям …
У меня три таблицы:
Table1 - **Restaurant** ------+----------+---------- id + name + place ------+----------+---------- 1 Rest1 Ny 2 Rest2 La 3 Rest3 Ph Table2 - **r_type** ------+----------+---------- id + name + code ------+----------+---------- 1 type1 0 2 type2 1 3 type3 2 4 type4 3 Table3 - **type_stack** ------+----------+---------- id + rest_id + type ------+----------+---------- 1 2 2 2 4 1 3 1 2
Теперь люди могут искать ресторан с type1 и type2 или только один тип и т. Д. Как я могу генерировать запросы, основываясь на состоянии флажка, которое пользователь выбрал. Как это делается в php? Будут около 7-12 флажков.
Другой вопрос – какой будет лучший способ реализовать это? Это такие таблицы? Поскольку у пользователей будет возможность изменить свои параметры и обновить их
Результаты с использованием ajax. Таким образом, загрузка сервера будет больше.
спасибо
Назовите свои флажки примерно так:
<input type="checkbox" name="chk[]" value="1" /> <input type="checkbox" name="chk[]" value="2" />
и т. д., где значения являются идентификаторами из Таблицы 1. Когда пользователь нажимает кнопку отправки, POST будет содержать значения отмеченных флажков.
В вашем PHP вы имеете
$chkArr = isset($_POST['chk']) ? $_POST['chk'] : array(); $chkArrCSV = implode(',',$chkArr);
Затем вы можете создать свой запрос как
$sql = 'SELECT blah FROM blah WHERE id IN '.mysql_real_escape_string($chkArrCSV);
и все, что вам нужно для дезинфекции ввода пользователя.
я не уверен в моем синтаксисе sql, но вы можете снять флажок в качестве параметров, а затем поместить свой запрос и где вы можете сделать что-то вроде:
from ... where (somecolumn = @check1 or @check1 is null) and (somecolumn2=@check2 or @check2 is null)
Я думаю, это будет хорошим решением для вас.
Надеюсь, поможет