phpcms筛选功能

phpcms论坛的看到的-----做筛选功能-----自定义函数

<?php
/**
 *  extention.func.php 用户自定义函数库
 *
 * @copyright                        (C) 2005-2010 PHPCMS
 * @license                           http://www.phpcms.cn/license/
 * @lastmodify                        2010-10-27
 */

 /**
 * 通过指定keyid形式显示所有联动菜单
 * @param  $keyid 菜单主id
 * @param  $linkageid  联动菜单id,0调用顶级
 * @param  $modelid 模型id
 * @param  $fieldname  字段名称
 */
function show_linkage($keyid, $linkageid = 0, $modelid = ‘‘, $fieldname=‘zone‘) {
    $datas = $infos = $array = array();
    $keyid = intval($keyid);
    $linkageid = intval($linkageid);
    //当前菜单id
    $field_value = intval($_GET[$fieldname]);
    $urlrule = structure_filters_url($fieldname,$array,1,$modelid);
    if($keyid == 0) return false;
    $datas = getcache($keyid,‘linkage‘);
    $infos = $datas[‘data‘];

    foreach($infos as $k=>$v){
        if($v[‘parentid‘]==$field_value){
            $array[$k][‘name‘] = $v[‘name‘];
            $array[$k][‘value‘] = $k;
            $array[$k][‘url‘] = str_replace(‘{$‘.$fieldname.‘}‘,$k,$urlrule);
            $array[$k][‘menu‘] = $field_value == $k ? ‘<em>‘.$v[‘name‘].‘</em>‘ : ‘<a href=‘.$array[$k][‘url‘].‘>‘.$v[‘name‘].‘</a>‘ ;
        }
    }
    return $array;
}
function structure_filters_url($fieldname,$array=array(),$type = 1,$modelid) {
        if(empty($array)) {
            $array = $_GET;
        } else {
            $array = array_merge($_GET,$array);
        }
        //TODO
        $fields = getcache(‘model_field_‘.$modelid,‘model‘);
        if(is_array($fields) && !empty($fields)) {
            ksort($fields);
            foreach ($fields as $_v=>$_k) {
                if($_k[‘filtertype‘] || $_k[‘rangetype‘]) {
                    if(strpos(URLRULE,‘.html‘) === FALSE) $urlpars .= ‘&‘.$_v.‘={$‘.$_v.‘}‘;
                    else $urlpars .= ‘-{$‘.$_v.‘}‘;
                }
            }
        }
        //后期增加伪静态等其他url规则管理,apache伪静态支持9个参数
        if(strpos(URLRULE,‘.html‘) === FALSE) $urlrule =APP_PATH.‘index.php?m=content&c=index&a=lists&catid={$catid}‘.$urlpars.‘&page={$page}‘ ;
        else $urlrule =APP_PATH.‘list-{$catid}‘.$urlpars.‘-{$page}.html‘;
        //根据get传值构造URL
        if (is_array($array)) foreach ($array as $_k=>$_v) {
            if($_k==‘page‘) $_v=1;
            if($type == 1) if($_k==$fieldname) continue;
            $_findme[] = ‘/{\$‘.$_k.‘}/‘;
            $_replaceme[] = $_v;
        }
     //type 模式的时候,构造排除该字段名称的正则
        if($type==1) $filter = ‘(?!‘.$fieldname.‘.)‘;
        $_findme[] = ‘/{\$‘.$filter.‘([a-z0-9_]+)}/‘;
        $_replaceme[] = ‘‘;
        $urlrule = preg_replace($_findme, $_replaceme, $urlrule);
        return         $urlrule;
}
/**
 * 生成分类信息中的筛选菜单
 * @param $field   字段名称
 * @param $modelid  模型ID
 */
function filters($field,$modelid,$diyarr = array()) {
    $fields = getcache(‘model_field_‘.$modelid,‘model‘);
    $options = empty($diyarr) ?  explode("\n",$fields[$field][‘options‘]) : $diyarr;
    $field_value = intval($_GET[$field]);
    foreach($options as $_k) {
        $v = explode("|",$_k);
        $k = trim($v[1]);
        $option[$k][‘name‘] = $v[0];
        $option[$k][‘value‘] = $k;
        $option[$k][‘url‘] = structure_filters_url($field,array($field=>$k),2,$modelid);
        $option[$k][‘menu‘] = $field_value == $k ? ‘<em>‘.$v[0].‘</em>‘ : ‘<a href=‘.$option[$k][‘url‘].‘>‘.$v[0].‘</a>‘ ;
    }
    $all[‘name‘] = ‘全部‘;
    $all[‘url‘] = structure_filters_url($field,array($field=>‘‘),2,$modelid);
    $all[‘menu‘] = $field_value == ‘‘ ? ‘<em>‘.$all[‘name‘].‘</em>‘ : ‘<a href=‘.$all[‘url‘].‘>‘.$all[‘name‘].‘</a>‘;

    array_unshift($option,$all);
    return $option;
}

/**
 * 获取联动菜单层级
 * @param  $keyid     联动菜单分类id
 * @param  $linkageid 菜单id
 * @param  $leveltype 获取类型 parentid 获取父级id child 获取时候有子栏目 arrchildid 获取子栏目数组
 */
function get_linkage_level($keyid,$linkageid,$leveltype = ‘parentid‘) {
    $child_arr = $childs = array();
    $leveltypes = array(‘parentid‘,‘child‘,‘arrchildid‘,‘arrchildinfo‘);
    $datas = getcache($keyid,‘linkage‘);
    $infos = $datas[‘data‘];
    if (in_array($leveltype, $leveltypes)) {
        if($leveltype == ‘arrchildinfo‘) {
            $child_arr = explode(‘,‘,$infos[$linkageid][‘arrchildid‘]);
            foreach ($child_arr as $r) {
                $childs[] = $infos[$r];
            }
            return $childs;
        } else {
            return $infos[$linkageid][$leveltype];
        }
    }
}

// 根据linkageid递归到父级
function get_parent_url($modelid,$field,$linkageid=0,$array = array()){
    $modelid = intval($modelid);
    if(!$modelid || empty($field)) return false;
    $fields = getcache(‘model_field_‘.$modelid,‘model‘);
    $keyid = $fields[$field][‘linkageid‘];
    $datas = getcache($keyid,‘linkage‘);
    $infos = $datas[‘data‘];

    if(empty($linkageid)){
        $linkageid = intval($_GET[$field]);
        if(!$linkageid) return false;
    }

    $urlrule = structure_filters_url($field,array(),1,$modelid);
    $urlrule = str_replace(‘{$‘.$field.‘}‘,$infos[$linkageid][‘parentid‘],$urlrule);
    array_unshift($array,array(‘name‘=> $infos[$linkageid][‘name‘],‘url‘=>$urlrule));
    if($infos[$linkageid][‘parentid‘]){
        return get_parent_url($modelid,$field,$infos[$linkageid][‘parentid‘],$array);
    }
    return $array;
}
/**
 * 构造筛选时候的sql语句
 */
function structure_filters_sql($modelid) {
    $sql = $fieldname = $min = $max = ‘‘;
    $fieldvalue = array();
    $modelid = intval($modelid);
    $model =  getcache(‘model‘,‘commons‘);
    $fields = getcache(‘model_field_‘.$modelid,‘model‘);
    $fields_key = array_keys($fields);
    //TODO
    $sql = ‘`status` = \‘99\‘‘;
    foreach ($_GET as $k=>$r) {
        if(in_array($k,$fields_key) && intval($r)!=0 && ($fields[$k][‘filtertype‘] || $fields[$k][‘rangetype‘])) {
            if($fields[$k][‘formtype‘] == ‘linkage‘) {
                $datas = getcache($fields[$k][‘linkageid‘],‘linkage‘);
                $infos = $datas[‘data‘];
                if($infos[$r][‘arrchildid‘]) {
                    $sql .=  ‘ AND `‘.$k.‘` in(‘.$infos[$r][‘arrchildid‘].‘)‘;
                }
            } elseif($fields[$k][‘rangetype‘]) {
                if(is_numeric($r)) {
                    $sql .=" AND `$k` = ‘$r‘";
                } else {
                    $fieldvalue = explode(‘_‘,$r);
                    $min = intval($fieldvalue[0]);
                    $max = $fieldvalue[1] ? intval($fieldvalue[1]) : 999999;
                    $sql .=" AND `$k` >= ‘$min‘ AND  `$k` < ‘$max‘";
                }
            } else {
                $sql .=" AND `$k` = ‘$r‘";
            }
        }
    }
    return $sql;
}

/**
 * 分页,如去掉则分页会有问题
 */
function makeurlrule() {
    if(strpos(URLRULE,‘.html‘) === FALSE) {
        return url_par(‘page={$‘.‘page}‘);
    }
    else {
        $url = preg_replace(‘/-[0-9]+.html$/‘,‘-{$page}.html‘,get_url());
        return $url;
    }
}
?>
时间: 2024-08-30 06:01:08

phpcms筛选功能的相关文章

五指cms筛选功能的实现

筛选功能的实现: $_POST['page_urlrule'] = 'tuan-{$pinpai}-{$renqun}-{$type}-{$price}-{$area}-{$tese}-{$st}-{$asc}-{$page}.html';$page_fields = array();$page_fields['pinpai'] = 2;$page_fields['renqun'] = 3;$page_fields['type'] = 4;$page_fields['price'] = '100

pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大。

Select rows from a DataFrame based on values in a column -pandas 筛选 https://stackoverflow.com/questions/17071871/select-rows-from-a-dataframe-based-on-values-in-a-column-in-pandas pandas的筛选功能,跟excel的筛选功能类似,但是功能更强大. 在SQL数据中, 我们可以用这样的语句: select * from

五指cms筛选功能的实现:

筛选功能的实现: $_POST['page_urlrule'] = 'tuan-{$pinpai}-{$renqun}-{$type}-{$price}-{$area}-{$tese}-{$st}-{$asc}-{$page}.html';$page_fields = array();$page_fields['pinpai'] = 2;$page_fields['renqun'] = 3;$page_fields['type'] = 4;$page_fields['price'] = '100

ECSHOP分类页面筛选功能(按分类下子分类和品牌筛选)

其实分类页面里面本来就有相关的品牌.属性.分类的筛选功能在category.php和模板加上相应的功能即可 1.读出当前分类的所有下级分类 $chlidren_category = $GLOBALS['db']->getALl('SELECT cat_id,cat_name FROM ' . $GLOBALS['ecs']->table('category') ." WHERE parent_id = '$cat_id' and is_show=1"); $category

【经验】angularjs 实现带查找筛选功能的select下拉框

一.背景 对于select的下拉列表,像国家选择这样的功能,全世界那么多国家,一直拉滚动条多辛苦,眼睛也要盯着找,累!so,为优化用户体验,带查找功能的下拉框是非常非常有必要的.都知道jquery里有这样的插件,但我们用的是Angularjs,更希望用双向绑定,指令的方式优雅地解决这个问题. 分析:    目标 在原来的<select ng-options="">标签上新加一个属性 select-search 就能支持查找的功能.如果这个属性没起作用,也不影响原来的sele

DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样

'近日有本论坛网友问:DataGridView如何实现列标头带数据筛选功能,就象Excel高级筛选功能一样 '今晚正好闲着没事,加之以前也没用到过这个需求,所以就写了个模拟功能,供各位坛友酌情参考. 'VB.NET 2008 环境 '新建一个项目后,只需在Form1中拉一个DataGridView,一个ComboBox,然后将下面代码复制粘贴即可,其它什么也不用做 Public Class Form1 Dim SelectedCol As Integer = 0, IsFindit As Boo

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

求解:php商品条件筛选功能你是怎么做出来的? 2013-09-25 13:43 chenhang607 | 浏览 2756 次 资源共享 求思路或者方法,最好能有些代码 2013-09-25 14:14 提问者采纳 php按条件筛选商品的功能,还是比较简单的.其实就是根据不同的条件组成SQL查询条件,从数据库里查出不同的商品出来.举个例子:用户可以按价格范围.按品牌.按商品名称这几项来综合查询.那么,在用户选择了上面这些查询条件后(可能这3个条件都设置了,也可能只设置了其中2个),提交到服务器

iwebshop框架中后台筛选功能的思路整理

本人在实际开发中,根据产品经理需求,在iwebshop框架原有的后台订单筛选功能里增加商户名称模糊筛选! 开发思路:首先要明白筛选的数据在数据库中的位置,对要筛选的字段进行模糊查询! 开发主要注意:因为iwebshop后台订单筛选功能是写在封装好的一个类下面 order/order_class.php里面,所以sql查询后的遍历和sql本身的条件,一定要注意书写正确! 实际开发书写代码思路讲解: if(isset($search['name']) && isset($search['key

织梦CMS实现多条件筛选功能

用织梦实现筛选的功能,其实主要就是运用到了织梦的高级搜索功能,然后用ajax去post替换掉本来的结果就可以了. 其实筛选的话,主要有两个问题需要解决,一个是前台的筛选实现,一个是后台根据前台的点击,反馈出相应的结果. 于是在网上搜索了N多的资料了之后,先实现前台的功能,就是你点了之后会有一个筛选的效果出来,当然,也只是一个效果.具体可以参照:jquery仿京东筛选效果.下面就一步一步用织梦来实现这样的功能. 首先我们先在后台自定义模型(自定义模型都不会的同学,可以直接去面壁思过了) 看到参照网