首页 » PHP笔记 » destoon城市地区两级联动

destoon城市地区两级联动

高蒙 2015/12/29 15:19 1.7k浏览 0评论 DestoonCMS


在制作destoon模板的时候,遇到调用地区两级联动,本来是想自己找个插件的。可是仔细一想,还是采用destoon系统内置的方法实现城市地区两级联动。经过自己仔细的研究终于找到了如何实现的方法,下面记录下来,便于以后查阅和复习。

一、php文件中的处理。

1)、在处理文件 *.inc.php 里面引入系统函数文件:
 
require DT_ROOT.'/include/post.func.php';


文件地址 include/post.func.php 

二、前台模版的调用。

1)、在网站的头部引入下面的3个js文件。
 
<script type="text/javascript" src="{DT_STATIC}file/script/config.js"></script>

<script type="text/javascript" src="{DT_STATIC}file/script/jquery.js"></script>

<script type="text/javascript" src="{DT_STATIC}file/script/common.js"></script>
 
2)、在需要调用的地方,插入下面的调用代码。
 
select表单代码: {ajax_area_select('post[areaid]', '请选择', 0,'class=pro')}
 
完成上面的步骤就可以完成城市地区的两级联动功能了,下面是简单的看下php中调用的函数。
 
ajax_area_select()函数是在post.func.php里面,主要使用的函数如下:
 
function ajax_area_select($name = 'areaid', $title = '', $areaid = 0, $extend = '', $deep = 0) {
 global $area_id;
 if($area_id) {
 $area_id++;
 }else{
 $area_id = 1;
 }
 $areaid = intval($areaid);
 $deep = intval($deep);
 $select = '';
 $select .= '<input name="'.$name.'" id="areaid_'.$area_id.'" type="hidden" value="'.$areaid.'"/>';
 $select .= '<div id="load_area_'.$area_id.'">'.get_area_select($title, $areaid, $extend, $deep, $area_id).'</div>';
 $select .= '<script type="text/javascript">';
 if($area_id == 1) $select .= 'var area_title = new Array;';
 $select .= 'area_title['.$area_id.']=\''.$title.'\';';
 if($area_id == 1) $select .= 'var area_extend = new Array;';
 $select .= 'area_extend['.$area_id.']=\''.$extend.'\';';
 if($area_id == 1) $select .= 'var area_areaid = new Array;';
 $select .= 'area_areaid['.$area_id.']=\''.$areaid.'\';';
 if($area_id == 1) $select .= 'var area_deep = new Array;';
 $select .= 'area_deep['.$area_id.']=\''.$deep.'\';';
 $select .= '</script>';
 if($area_id == 1) $select .= '<script type="text/javascript" src="'.DT_STATIC.'file/script/area.js"></script>';
 return $select;
}

 
function get_area_select($title = '', $areaid = 0, $extend = '', $deep = 0, $id = 1) {
 global $db;
 $parents = array();
 if($areaid) {
 $r = $db->get_one("SELECT child,arrparentid FROM {$db->pre}area WHERE areaid=$areaid");
 $parents = explode(',', $r['arrparentid']);
 if($r['child']) $parents[] = $areaid;
 } else {
 $parents[] = 0;
 }
 $select = '';
 foreach($parents as $k=>$v) {
 if($deep && $deep <= $k) break;
 $v = intval($v);
 $select .= '<select onchange="load_area(this.value, '.$id.');" '.$extend.'>';
 if($title) $select .= '<option value="0">'.$title.'</option>';
 $result = $db->query("SELECT areaid,areaname FROM {$db->pre}area WHERE parentid=$v ORDER BY listorder,areaid ASC");
 while($a = $db->fetch_array($result)) {
 $selectid = isset($parents[$k+1]) ? $parents[$k+1] : $areaid;
 $selected = $a['areaid'] == $selectid ? ' selected' : '';
 $select .= '<option value="'.$a['areaid'].'"'.$selected.'>'.$a['areaname'].'</option>';
 }
 $select .= '</select> ';
 }
 return $select;
}

通过以上几个步骤就可以很轻松的在网站任意位置,使用城市地区两级联动的功能了。




相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    485

    标签

    42

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。