本文实例讲述了thinkphp实现的省市区三级联动功能。分享给大家供大家参考,具体如下:
一张表实现省市区三级联动【3409条数据】
1. php代码:
public function index(){
$province = m('tree')->where ( array('pid'=>1) )->select ();
$this->assign('province',$province);
$this->display();
}
public function getregion(){
$region=m("tree");
$map['pid']=$_request["pid"];
$map['type']=$_request["type"];
$list=$region->where($map)->select();
echo json_encode($list);
}
2. html代码:
<select name="province" id="province" onchange="loadregion('province',2,'city','{:u('index/getregion')}');">
<option value="0" selected>省份/直辖市</option><volist name="province" id="vo">
<option value="{$vo.id}" >{$vo.name}</option></volist>
</select>
<select name="city" id="city" onchange="loadregion('city',3,'town','{:u('index/getregion')}');">
<option value="0">市/县</option>
</select>
<select name="town" id="town">
<option value="0">镇/区</option>
</select>
3. javascript代码:
function loadregion(sel,type_id,selname,url){
jquery("#"+selname+" option").each(function(){
jquery(this).remove();
});
jquery("<option value=0>请选择</option>").appendto(jquery("#"+selname));
if(jquery("#"+sel).val()==0){
return;
}
jquery.getjson(url,{pid:jquery("#"+sel).val(),type:type_id},
function(data){
if(data){
jquery.each(data,function(idx,item){
jquery("<option value="+item.id+">"+item.name+"</option>").appendto(jquery("#"+selname));
});
}else{
jquery("<option value='0'>请选择</option>").appendto(jquery("#"+selname));
}
}
);
}
4. sql代码:
drop table if exists `tp_tree`; create table `tp_tree` ( `id` int(5) unsigned not null auto_increment, `pid` int(5) unsigned not null default '0', `name` varchar(120) default null, `type` tinyint(1) default '2', primary key (`id`) ) engine=myisam auto_increment=3410 default charset=utf8;
5. tp_tree.sql文件点击此处本站下载。
更多关于thinkphp相关内容感兴趣的读者可查看本站专题:《thinkphp入门教程》、《thinkphp模板操作技巧总结》、《thinkphp常用方法总结》、《codeigniter入门教程》、《ci(codeigniter)框架进阶教程》、《zend framework框架入门教程》及《php模板技术总结》。
希望本文所述对大家基于thinkphp框架的php程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!