как создать систему фильтров?

#php #html

#php #HTML

Вопрос:

у меня есть база данных, подобная этой prod_id prod_name catogory_1 catogory_2 catogary_3 теперь я хочу разместить свой фильтр следующим образом

 <slect id="filter for cat 1">
<option vlaue="all">all</option>
<option vlaue="caps">Caps</option>
<option vlaue="shoose">shoose</option>
<option vlaue="cloths">cloths</option>
<option vlaue="bags">bags</option>
</slect>

<slect id="filter for cat 2">
<option vlaue="all">all</option>
<option vlaue="mens">mans</option>
<option vlaue="womens">wonens</option>
<option vlaue="babys">babys</option>
</slect>

<slect id="filter for cat 3">
<option vlaue="all">all</option>
<option vlaue="large">Larg</option>
<option vlaue="midum">midum</option>
<option vlaue="small">small</option>
</slect>

<div id="display_prod_list">
here goes the list
</div>
  

моя функция

 <?php
function display_product() {
$query = mysql_query("SELECT `pord_id` AS `id`, `prod_name` AS `name`,
        `catogory_1` AS `catogory_1`, `catogory_2` AS `catogory_2`,
        `catogory_3` AS `catogory_3` FROM `porducts`");
$products = array();
while(($rows = mysql_fetch_assoc($query))!== false) {
$products[] = $rows;

}
return $pruducts;
}
?>
  

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

Комментарии:

1. «ГДЕ» не пытался OP ….?

2. эй, ребята, я новичок в этом, поэтому его вопрос кажется вам излишним. извините за это. скажите мне условие where для всех, если я передам значение 3 выбранных полей в свою функцию и поставлю условие where «где cat_1= $ cat-1 amp;amp; cat_2 = $ cat-2 amp;amp; cat_3 = $ cat-3», но каково условие where для всех. это мой первый раз, поэтому я понятия не имею, как создать систему фильтров.

3. Во-первых, вы должны избавиться от своих опечаток в коде, иначе ничего не будет работать должным образом. 😉 ( catogory и catogary , pord vlaue , slect и т.д.)

4. Это был тонкий намек на то, на что следует обратить внимание. Если вы знаете, что вам следует использовать условие where в инструкции SQL, пожалуйста, укажите это в вопросе, как правило, чем больше информации вы предоставляете в вопросе, тем лучше.

5. я просто хочу, чтобы, если пользователь выбрал bag small baby, я хотел бы использовать только samall baby bag, а не список продуктов с отверстиями, вот и все, что я хочу сделать, и что выберите id и значения параметров r не реальны, например, только может ли кто-нибудь мне помочь

Ответ №1:

Я не знаю, касается ли это того, о чем вы просите, но надеюсь, что это поможет.

Используйте предложение WHERE в вашем запросе MySQL, например:

 SELECT `pord_id` AS `id`, `prod_name` AS `name`,
        `catogory_1` AS `catogory_1`, `catogory_2` AS `catogory_2`,
        `catogory_3` AS `catogory_3` 
  FROM `porducts`
WHERE catogory_1 = 'caps' AND catagory_2 = 'babys';
  

Вы могли бы построить условие вашего запроса таким образом:

 $conditions = array();
$condition_string = '';

if ($catagory_1 != 'all') { $conditions[] = "catagory_1 = $catagory_1 "; }
if ($catagory_2 != 'all') { $conditions[] = "catagory_2 = $catagory_2 "; }
if ($catagory_3 != 'all') { $conditions[] = "catagory_3 = $catagory_3 "; }

if ($conditions) { $condition_string = ' WHERE '. implode($conditions, ' AND '); }

$sql = 
"SELECT `pord_id` AS `id`, `prod_name` AS `name`,
            `catogory_1` AS `catogory_1`, `catogory_2` AS `catogory_2`,
            `catogory_3` AS `catogory_3` 
 FROM `porducts` $condition_string ";
  

Комментарии:

1. спасибо за ответ, я знаю, что должен использовать where, но каково условие where для всех. думаю, у меня есть продукция типа catogory_1 = сумка, catogory_2 = малыш и catogory_3 = маленький. я хочу показать этот элемент, когда пользователь выбирает сумки, babys, all. в этом случае мой запрос выглядит следующим образом («/// коды, ГДЕ catogory_1 = ‘сумки’ И catogory_2 = ‘babys’ И catogory_3 = ‘все'»); запрос возвращает false, потому что этот элемент catogory_3 маленький, а не весь. это моя проблема

2. что вам нужно сделать, так это не включать это условие, когда значение равно all (или 0). я редактирую, проверьте мой ответ еще раз

Ответ №2:

Просто PHP

Стандартная HTML-форма, которая суммируется с php-скриптом, который выполняет запрос на основе значений фильтра при нажатии кнопки отправки.

Используйте предложение SQL WHERE, чтобы сузить ваши результаты до продуктов, соответствующих критериям.

например. WHERE catogory_1 = 'caps' AND catagory_2 = 'babys';

Вам также нужно будет добавить некоторую логику в php, чтобы предотвратить запрос категории, когда значение фильтра равно «all», поскольку вы можете эффективно игнорировать эти категории.

Затем выведите свои результаты.

PHP и jQuery

Вы могли бы использовать jQuery для заполнения части страницы с продуктами только теми продуктами, которые соответствуют фильтрам категорий, когда фильтр изменен, а не перезагружать страницу. Запрос ajax выполняется к php-скрипту, который запрашивает на основе текущих фильтров.

Например, сначала отображаются все продукты, когда загружается ваша страница, затем «фильтр для категории 1» изменяется на «caps», используя jQuery для обнаружения события изменения при фильтрации ajax-вызова php-скрипта, который выполнит следующий запрос.

 SELECT `pord_id` AS `id`, `prod_name` AS `name`,
        `catogory_1` AS `catogory_1`, `catogory_2` AS `catogory_2`,
        `catogory_3` AS `catogory_3` 
FROM `porducts`
WHERE catogory_1 = 'caps';
  

Затем создайте свой HTML-код на основе результатов, и он будет отправлен обратно в виде ответа ajax, и вы должны использовать его для замены текущего HTML-кода для продуктов.

Комментарии:

1. спасибо за ваш ответ, но что это за логический код, который игнорирует предложение where для значения catogory — это все. посмотрите мой комментарий к первому ответу и действительно спасибо за ваш ответ и время.