当前位置:首页 » 编程语言 » php筛选功能

php筛选功能

发布时间: 2025-02-05 15:29:09

‘壹’ 求解:php商品条件筛选功能你是怎么做出来的

php按条件筛选商品的功能,还是比较简单的。
其实就是根据不同的条件组成sql查询条件,从数据库里查出不同的商品出来。
举个例子:
用户可以按价格范围、按品牌、按商品名称这几项来综合查询。
那么,在用户选择了上面这些查询条件后(可能这3个条件都设置了,也可能只设置了其中2个),提交到服务器端,服务端程序收到用户的查询条件,开始组装SQL查询语句,最后执行组装好的SQL查询语句,返回结果给用户。

代码举例:
用户提交的查询:
price='0-1000'; //按价格范围0-1000元查询

brandid=20; //要求品牌必须是ID号为20的这个(假设这个ID号为20的品牌,名字叫”西部数据")
proctname='绿盘'; //商品名称只设置了2个字以做模糊查询

用户点了查询按钮后,根据程序的不同,可能是get方式也可能是post方式发送查询请求,现假设为post方式。

然后在服务器端程序中,收到用户的查询请求:
$price=$_POST['price'];
$price_arr=explode('-',$price); //这里是把价格范围按-号拆散成数组,方便在组装SQL查询语句时用。

$brandid=$_POST['brandid'];
$proctname=$_POST['proctname'];

当然,上面的数据获取后,还要进行相应的安全方面的检查与处理,这里先略过。

接下来,开始组装SQL查询语句:

$sqlexp='';
//下面开始组根据用户设置的查询条件进行SQL查询条件的组装

if(!empty($price)) {
$sqlexp.=' and (price>='.$price_arr[0].' and price<='.$price_arr[1];

}
if(!empty($brandid)) {
$sqlexp.=' and brandid='.$brandid;
}
if(!empty($proctname)) {
$sqlexp.=" and instr(proctname,'$proctname')>0";
}

//下面执行SQL查询

$result=mysql_query("select * from proct where state=1 ".$sqlexp);

在上面的查询完成后,把查询结果返回给用户,就完成了用户按条件筛选商品的功能。

‘贰’ php 根据某一元素值进行数组筛选

<?php
functionfilter($elem){
return$elem['type']=='空调';
}
$arr=Array(
Array('id'=>1,'type'=>'空调'),
Array('id'=>2,'type'=>'电视机'),
Array('id'=>3,'type'=>'空调')
);
$newarr=array_filter($arr,'filter');
print_r($newarr);
exit;

‘叁’ 织梦筛选功能怎么弄详细说明 ,谢谢!

织梦多条件筛选功能实现
我们已经在前台实现了筛选的功能了,虽然价格、尺寸两个类型没有添加,这是因为我是要把他们固定做好,因为他们在模型中使用的类型是数字类型,并非其他三个(品牌、平台以及显卡)是option类型。
既然前台已经做好了,那我们就开始后台的功能了。
具体的后台我使用的是advancesearch.php这个搜索的功能来实现的。
我们复制一个advancesearch.php的模板出来,默认的advanceserach.php的模板是/templets/default/advancesearch.htm,我们把这个模板,复制到我们的自定义的模板文件夹/templets/jingdong里面,名字就叫做filter_tmp.htm。
然后进入后台,在“内容模型管理”里面选择你所需要搜索的模型,然后点击这个模型后面的放大镜图标,在“附件表可供自定义搜索的字段”中,勾选上你需要搜索的字段,自定义搜索结果模板页,写上我们刚刚复制的模板名称,叫做filter_tmp.htm,确定。
这里可以测试一下,能否正常使用搜索。
不过好像是织梦系统自带的不可以的,我试了好多次都不行,追踪了一下,好像并没有查询附加表,于是在advancesearch.php的218行,原来的代码是

$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";
在type.*的后面添加行一个addon.*,也就是变成如下的代码

$query = "SELECT main.id AS aid,main.*,main.description AS description1, type.*,addon.*
FROM $maintable main
LEFT JOIN #@__arctype type ON type.id = main.typeid
LEFT JOIN $addontable addon ON addon.aid = main.id
$where $orderby";

然后还有124行添加 ${$var}=iconv(“utf-8″,”gb2312″,${$var}); 否则会导致中文乱码。
还有一个就是如果使用()英文括号的话,要小心了,因为会被安全sql过滤掉。
下面,是我简单的制作了下filter_tmp.htm,大家可以参考使用。

{dede:datalist}
<div style="border: 1px solid #CCC;margin:20px 0;">
<strong>标题:</strong>{dede:field.title/}<br />
<strong>品牌:</strong>{dede:field.pinpai/}<br />
<strong>价格:</strong>{dede:field.jiage/}<br />
<strong>尺寸:</strong>{dede:field.chicun/}<br />
<strong>平台:</strong>{dede:field.pingtai/}<br />
<strong>显卡:</strong>{dede:field.xianka/}<br />
</div>
{/dede:datalist}
{dede:pagelist listsize='5'/}
但是我们最终是要把这个页面“嵌”到filter.htm中,也就是最终的列表页里面。
现在我们打开filter这个模板文件,在最下面加一个div,id设置为result,这个是用来存放最后筛选出来的结果的地方。
然后打开filter.js,下面重点都是在这个js里面写的。

热点内容
cocosandroid开发 发布:2025-02-05 17:22:17 浏览:667
编程员发型 发布:2025-02-05 17:09:18 浏览:225
网站会员管理源码 发布:2025-02-05 17:03:32 浏览:193
服务器端口怎么调节 发布:2025-02-05 16:57:41 浏览:46
乐山海棠社区民意上传 发布:2025-02-05 16:55:52 浏览:510
编程老爷爷 发布:2025-02-05 16:48:20 浏览:129
支持ftp的免费空间 发布:2025-02-05 16:32:00 浏览:891
python时间比较 发布:2025-02-05 16:31:46 浏览:52
手机银行的密码怎么改密码忘了怎么办啊 发布:2025-02-05 16:02:02 浏览:181
算法牛人左 发布:2025-02-05 15:31:02 浏览:442