发布时间:2015-05-27 19:32:27作者:知识屋
第一个项目阶段接近尾声了,分享一个关于无限分类自定义的回调函数(说实话,当时写出来也是懵的,现在再看更懵,O(∩_∩)O~)
//项目需求:想在首页做个商品搜索
//做法:写了个下拉列表,列表项就是下表中的9个categoryname.。。我想任意选择一个类别都可以一次性搜索出商品表中的该类别的商品(包括下边的子类)。
//思想过程:最开始也想,,,,where path like .%0-1%.......之类的来着,但是后来发现分页的时候遇到很大问题,因为当时我上传商品没有在有子类的id中上传商品(当循环去查询商品的时候会有空循环--当该类别还有子类的时候)。
越说越乱了,还是拿表出来直接示意吧、、、
category表数据结构示意:
+----+-----+-------+--------------+
| id | pid | path | categoryname |
+----+-----+-------+--------------+
| 1 | 0 | 0 | 所有商品 1
| 2 | 1 | 0-1 | 国产商品 2
| 4 | 2 | 0-1-2 | 国产水货 4
| 5 | 2 | 0-1-2 | 国产行货 5
| 3 | 1 | 0-1 | 进口商品 3
| 6 | 3 | 0-1-3 | 进口水货 6
| 7 | 3 | 0-1-3 | 进口行货 7
| 8 | 1 | 0-1 | 测试类 8
| 9 | 1 | 0-1 | 杂货专区 9
+----+-----+-------+--------------+
看着表就好多了,我的想法是如果我在下拉列表中选择的是“所有商品”,那么只要是属于所有商品的所有子类都应该被我拿到(并且我还不希望拿到如上表中的“国有商品”、"进口商品",因为他们下面还有子类)。写到这里,我似乎觉得可以不用我这么麻烦去写回调了。~~~~(>_<)~~~~ 、、、、似乎,似乎、、、、算了、、、还是不要半途而废了,花了我大半个小时才憋出这点字呢。。。∑
<?php
mysql_connect('localhost','root','admin');
mysql_select_db('dzshop');
mysql_query("set names utf8");
//测试
echo rtrim( list_typeid(1), ',' ); //输出 4,5,6,7,8,9 ^o^ 此时可以 select * from goods where typeid in(4,5,6,7,8,9) 拿出所有商品不是问题了。
echo rtrim( list_typeid(2), ',' ); //输出 4,5
echo rtrim( list_typeid(4), ',' ); //输出 4
/*
* 函数:list_typeid
* 功能:获取给定的类别,获取该指定typeid(即category表的id)下的所有没有子类的category.id(category.id==goods.typeid)
* $id:需要查询的id
* $category_name:分类表的表名
*/
function list_typeid($id,$category_name='category'){
$sql="select b.id,b.pid from {$category_name} a,{$category_name} b where a.id={$id} and b.pid={$id}";
$result=mysql_query($sql);
if(mysql_affected_rows()>0){ //影响行数大于0表示该分类下有子类,进去继续执行
while( $arr = mysql_fetch_assoc($result) ){
$list_id.=list_typeid($arr['id']);
}
}else{ //没有影响行,表示该子类下没有子类了,就把这个id拿出来
return $id.','; //方便SQL语句的书写 .... WHERE ID IN($id) ....
}
return $list_id;
}
如何对PHP文件进行加密方法 PHP实现加密的几种方式介绍
php生成圆角图片的方法 电脑中php怎么生成圆角图片教程
用PHP构建一个留言本方法步骤 php怎么实现留言板功能
php中三元运算符用法 php中的三元运算符使用说明
php文件如何怎么打开方式介绍 php文件用什么打开方法
PHP怎么插入数据库方法步骤 php编程怎么导入数据库教程
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
PHP 获取远程文件大小的3种解决方法 如何用PHP获取远程大文件的大小
20个实用PHP实例代码 php接口开发实例代码详细介绍
如何架设PHP服务器方法步骤 怎么搭建php服务器简单教程