如何创建过滤系统?

时间:2011-09-29 12:51:44

标签: 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或其他东西。请 告诉我过滤我的产品的最佳方法,谢谢

2 个答案:

答案 0 :(得分:2)

我不知道这是关于你要求的,但希望它有所帮助。

在MySQL查询中使用WHERE子句,例如:

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 :(得分:0)

只是PHP

一个标准的HTML表单,它与php脚本相加,该脚本在按下提交按钮时根据过滤器值执行查询。

使用SQL WHERE clause将结果范围缩小到符合条件的产品。

例如。 WHERE catogory_1 = 'caps' AND catagory_2 = 'babys';

你还需要在php中添加一些逻辑,以防止你在过滤器值为“all”时查询某个类别,因为你可以有效地忽略这些类别。

然后输出你的结果。

PHP&amp; jQuery的

当更改过滤器而不是重新加载页面时,您可以使用jQuery仅使用与类别过滤器匹配的产品来填充页面的产品部分。对基于当前过滤器查询的php脚本发出ajax请求。

例如,首先加载页面时会显示所有产品,然后使用jQuery检测过滤器上的change event 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。