ThinkPHP自动填充实现无限级分类--无法进行排序的问题
李老师进的ThinkPHP自动填充实现无限级分类中存在一个问题:
无法对无限分类的数据进行desc排序,只能以asc的排序方式。而且输出的结果也是混乱的,不知道有没有办法实现数据的desc排序:
$list = $model->field("id,status,pid,name,final,path,concat(path,'-',id) as bpath")->order('bpath')->select();
无法对无限分类的数据进行desc排序,只能以asc的排序方式。而且输出的结果也是混乱的,不知道有没有办法实现数据的desc排序:
$list = $model->field("id,status,pid,name,final,path,concat(path,'-',id) as bpath")->order('bpath')->select();
图片:aa.jpg
'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">
'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">
作者: nzing 发布时间: 2011-08-20
这种数据结构是不能通过mysql直接排序的,,原因很简单bpath是字符串格式,,12会被认为比2小
你要把分类数组弄到php里去排序,,另外你还需要增加一个sort字段用于各分类之前进行排序
php里的思路是这样的:
1。建一个新的数组,把0级分类先加进这个数组,
2.建立一个for循环,然后用bpath来找子分类,找到一组子分类后,先对他们进行排序用这个函数array_multisort(),
3.然后用array_splice函数插入到这个父分类之后,,这样一直循环
注意原数组要把找到那些分类都去掉array_filter(),并重建索引array_values(),,这样原数组越来越少,速度也很快
你要把分类数组弄到php里去排序,,另外你还需要增加一个sort字段用于各分类之前进行排序
php里的思路是这样的:
1。建一个新的数组,把0级分类先加进这个数组,
2.建立一个for循环,然后用bpath来找子分类,找到一组子分类后,先对他们进行排序用这个函数array_multisort(),
3.然后用array_splice函数插入到这个父分类之后,,这样一直循环
注意原数组要把找到那些分类都去掉array_filter(),并重建索引array_values(),,这样原数组越来越少,速度也很快
作者: 心诚志成 发布时间: 2011-10-21