2011-09-29 69 views
-1

我有这样一个数据库,这个 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或什么的。请 告诉我筛选我的产品的最佳方法,谢谢

+0

你试过了什么? :) – fresskoma

+0

“哪里”没有OP尝试....? – Bruce

+0

嘿家伙,我对此很感兴趣,所以对你来说这似乎是一个充实的问题。对不起。告诉我,如果我将3个选择的filds的值传递给我的函数,并将条件“where cat_1 = $ cat-1 && cat_2 = $ cat-2 && cat_3 = $ cat-3”传递给所有条件,但是什么是所有的条件。这是我第一次,所以我不知道如何制作过滤系统。 – hamp13

回答

2

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

使用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 "; 
+0

谢谢对于你的回答我知道我必须使用在哪里,但是什么是所有的条件。猜我有一个像catogory_1 = bag,catogory_2 = babys和catogory_3 = small的制作。我想在用户选择包包,婴儿,全部时显示该项目。在这种情况下,我的查询看起来像这样(“/// codes WHERE catogory_1 ='bags'AND catogory_2 ='babys'AND catogory_3 ='all'”);查询返回false,因为该项目catogory_3不是全部。这是我的问题 – hamp13

+0

你应该做的是,当值全部(或0)时不包括该条件。我正在编辑,再次检查我的答案 –

+0

给我一点;) –

0

只是PHP

标准HTML表单,该表单支持php脚本,它在按下提交按钮时根据过滤器值执行查询。

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

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

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

然后输出你的结果。

PHP & jQuery的

你可以使用jQuery只有当过滤器是改变,而不是重新加载页面匹配类别的过滤器产品来填充网页的部分产品。 ajax请求是根据当前过滤器查询的一个php脚本。

例如,所有产品首先在页面加载时显示,然后将“类别1的过滤器”更改为“caps”,使用jQuery检测过滤器上的change eventajax调用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的产品。

+0

谢谢你的回答,但是什么是忽略catogory值的where子句的逻辑代码全是。看看我对第一个答案的评论,并非常感谢你的回答和时间。 – hamp13

+1

@Feida Kila在编辑答案中为你提供了php逻辑。 – Bruce