欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

关于php+mysql+ajax省市区三级联动菜单,求帮助啊

程序员文章站 2024-04-04 21:16:53
...
哎,我又来了。这次是关于省市区三级联动菜单的问题。我在网上找了很多这样的代码,但是大部分都是把数据放到js里面的。老板说不行,要连接数据库的,然后我又在CSDN论坛上找了一个带数据库的。但是不好用啊,后面老板给了我数据库,是三个表,省市区各占一个,省市区个有一个id,市和区有父id,市的父id就是省的ID,区的父id就是市id。然后用ajax作出三级联动的效果,他说这样简单,可是我不会ajax啊。不知道大神可不可以帮帮忙啊。昨天就因为这个是加班到8点多啊,大学毕业以来第一次加班到这么晚啊......这个本是昨天的活,今天还有今天的活,不能再拖啊了啊。拜托了。


回复讨论(解决方案)

http://blog.csdn.net/sangliu/article/details/8674886
http://blog.csdn.net/ykm0722/article/details/6064559
http://www.cnblogs.com/freespider/archive/2010/08/30/1812669.html

别人讲N遍,不如自己动手做一遍。

http://download.csdn.net/detail/jam00/5079966
或者留个邮箱直接发给你

http://download.csdn.net/detail/jam00/5079966
或者留个邮箱直接发给你


谢了,真的没有积分了。894563420@qq.com

http://blog.csdn.net/sangliu/article/details/8674886
http://blog.csdn.net/ykm0722/article/details/6064559
http://www.cnblogs.com/freespider/archive/2010/08/30/1812669.html

别人讲N遍,不如自己动手做一遍。

额,我在网上找了一个纯js的,把他放在静态页面就还用。但是放到我的项目里面就不好用了。不显示数据。用火狐调试显示 还有 ,area.js,location.js这两个文件每个里面都声明了一个函数function showLocation(province , city , town)和
function Location() 
我在百度上查说
$(document).ready(function() {
的意思是:“页面加载成功后,页面内的所有链接在“点击”事件的时候,都加载那个函数”我的项目是在cms基础上进行二次开发,是不是和原有的js冲突了。本人js小白,求指导.....

http://blog.csdn.net/sangliu/article/details/8674886
http://blog.csdn.net/ykm0722/article/details/6064559
http://www.cnblogs.com/freespider/archive/2010/08/30/1812669.html

别人讲N遍,不如自己动手做一遍。

        
这个是html页面。
area.js
function showLocation(province , city , town) {		var loc	= new Location();	var title	= ['省份' , '地级市' , '市、县、区'];	$.each(title , function(k , v) {		title[k]	= '';	})		$('#loc_province').append(title[0]);	$('#loc_city').append(title[1]);	$('#loc_town').append(title[2]);			$('#loc_province').change(function() {		$('#loc_city').empty();		$('#loc_city').append(title[1]);		loc.fillOption('loc_city' , '0,'+$('#loc_province').val());		$('#loc_town').empty();		$('#loc_town').append(title[2]);		//$('input[@name=location_id]').val($(this).val());	})		$('#loc_city').change(function() {		$('#loc_town').empty();		$('#loc_town').append(title[2]);		loc.fillOption('loc_town' , '0,' + $('#loc_province').val() + ',' + $('#loc_city').val());		//$('input[@name=location_id]').val($(this).val());	})		$('#loc_town').change(function() {		$('input[@name=location_id]').val($(this).val());	})		if (province) {		loc.fillOption('loc_province' , '0' , province);				if (city) {			loc.fillOption('loc_city' , '0,'+province , city);						if (town) {				loc.fillOption('loc_town' , '0,'+province+','+city , town);			}		}			} else {		loc.fillOption('loc_province' , '0');	}		}
location.js
function Location() {	this.items	= {	'0':{1:'北京市',22:'天津市',44:'上海市',66:'重庆市',108:'河北省',406:'山西省',622:'内蒙古',804:'辽宁省',945:'吉林省',1036:'黑龙江省',1226:'江苏省',1371:'浙江省',1500:'安徽省',1679:'福建省',1812:'江西省',1992:'山东省',2197:'河南省',2456:'湖北省',2613:'湖南省',2822:'广东省',3015:'广西',3201:'海南省',3235:'四川省',3561:'贵州省',3728:'云南省',3983:'*',4136:'陕西省',4334:'甘肃省',4499:'青海省',4588:'宁夏',4624:'*',4802:'香港',4822:'澳门',4825:'*省'},	'0,1':{2:'北京市'},.............};}Location.prototype.find	= function(id) {	if(typeof(this.items[id]) == "undefined")		return false;	return this.items[id];}Location.prototype.fillOption	= function(el_id , loc_id , selected_id) {	var el	= $('#'+el_id);		var json	= this.find(loc_id);		if (json) {		var index	= 1;		var selected_index	= 0;		$.each(json , function(k , v) {			var option	= '';			el.append(option);						if (k == selected_id) {				selected_index	= index;			}						index++;		})		el.attr('selectedIndex' , selected_index);	}}

怎么都来不起啊,用数据库的怎么操作的谁知道啊?

谁知道的发到我邮箱里面来谢啦2969978505@qq.com

http://blog.sina.com.cn/s/blog_49ea36420100t1ji.html

这个例子你看看js,服务端你可以写原生php代码查询。
有不懂的问题,再贴出来吧

http://www.helloweba.com/view-blog-188.html
http://www.helloweba.com/demo/cityselect/

这个是用js实现,效果来的快。

http://blog.sina.com.cn/s/blog_49ea36420100t1ji.html

这个例子你看看js,服务端你可以写原生php代码查询。
有不懂的问题,再贴出来吧

我用上面那个老兄邮箱发给我的代码,出现的问题是查询出来的省的数据都是“???”但是数据库编码是UTF8,我php的编码也是UTF8,不知道为啥会出现这种问题。还有就是我代码放到我的项目里,就只有省里面会有数据,但是市和区里面都查询不到数据,不知道为啥,

原生 js 代码不超过 20 行
用 jquery 不超过 4 行,如果数据结构设计的好,一行也就可以了

php 部分不算数据库连接,也就 3、4 行代码吧

不至于搞得那么复杂吧?一天了。还没头绪

http://blog.sina.com.cn/s/blog_49ea36420100t1ji.html

这个例子你看看js,服务端你可以写原生php代码查询。
有不懂的问题,再贴出来吧

如果放在一个页面里可查询到数据,不过全是? 放到我的项目里就只能查到省的数据 .
script type="text/javascript">//创建AJAX 引擎function getXmlHttpObject(){	var XmlHttpRequest;	if(ActiveXObject){		//ie		XmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");	}else{		//火狐,opera		XmlHttpRequest=new XMLHttpRequest();	}	return XmlHttpRequest;}var myXmlHttpRequest="";//根据省级信息获取城市function getCities(){	myXmlHttpRequest=getXmlHttpObject();	if(myXmlHttpRequest){		var url="showCitiesPro.php";//post方式		var data="type=city&province="+$('province').value;		myXmlHttpRequest.open("post",url,true);//异步		myXmlHttpRequest.setRequestHeader("content-type","application/x-www-form-urlencoded");		//指定回调函数		myXmlHttpRequest.onreadystatechange=chuliCity;		//发送		myXmlHttpRequest.send(data);	}}function chuliCity(){	if(myXmlHttpRequest.readyState==4){		//status==200 才是真正的成功		if(myXmlHttpRequest.status==200){			//取出服务器回送的数据			var cities=myXmlHttpRequest.responseXML.getElementsByTagName("name");			var codes=myXmlHttpRequest.responseXML.getElementsByTagName("code");			//每次执行都将id为city的select长度清零			$('city').length=0;			var myOption=document.createElement("option");			myOption.innerText="---城市---";			$('city').appendChild(myOption);			//遍历并取出城市			for(var i=0;i
这是html里的js代码
 城市                

原生 js 代码不超过 20 行
用 jquery 不超过 4 行,如果数据结构设计的好,一行也就可以了

php 部分不算数据库连接,也就 3、4 行代码吧

不至于搞得那么复杂吧?一天了。还没头绪

哎,主要是js的一点都不会啊,php也是半吊子。求大神给个js代码被,网上弄的都是一放到我的项目里就不好用了。关于php的给我个思路我自己弄也可以啊。我的数据库的结构就是省市区分三个表,每个表都有一个id,一个名字。市和区各有一个父id,市的父id就是省的id,区的父id就是市的id

php 部分

//连接mysql并选择库switch($_POST['type']) {  case 'shi':     $tbl = '市表';     $where = "pid='$_POST[id]'";     break;  case 'xian':     $tbl = '县表';     $where = "pid='$_POST[id]'";     break;  default:     $tbl = '省表';     $where = "1";}$sql = "select concat('


js 部分 需加载 jquery
$(function() {  $('#sheng').change(function() {     $('#shi').load(url, {type:'shi', id:$(this.val()});  });  $('#shi').change(function() {     $('#xian').load(url, {type:'xian', id:$(this.val()});  });  $('#sheng').load(url, {type:sheng'});});

HTML部分

php 部分

//连接mysql并选择库switch($_POST['type']) {  case 'shi':     $tbl = '市表';     $where = "pid='$_POST[id]'";     break;  case 'xian':     $tbl = '县表';     $where = "pid='$_POST[id]'";     break;  default:     $tbl = '省表';     $where = "1";}$sql = "select concat('


js 部分 需加载 jquery
$(function() {  $('#sheng').change(function() {     $('#shi').load(url, {type:'shi', id:$(this.val()});  });  $('#shi').change(function() {     $('#xian').load(url, {type:'xian', id:$(this.val()});  });  $('#sheng').load(url, {type:sheng'});});

HTML部分
那个加载jquery是不是在页头加一个啊

是的,当然你要有,且路径正确

是的,当然你要有,且路径正确

再问你个事情呗,就是我把你给的三段代码都放在了html里面,然后也面上放php代码的地放就把省里面的所有数据都循环出来了,
{$css}{$js}', name,  '') from $tbla where $wherea";$rsa = mysql_query($sql);while(list($r) = mysql_fetch_row($rsa)) $row[] = $r;echo join('', $row);?>

帮帮{$action_name}

checked="checked" /> 家庭 checked="checked" /> 店铺
价格
姓名
内容
联系方式
城市
我看php的代码最后把数据echo了一下,所以页面上会出现省的数据。但是怎么给她放到下拉菜单里面的。还有我这个网站使用cms做的,是不是就不用加载jquery了。


http://download.csdn.net/detail/jam00/5079966
或者留个邮箱直接发给你


谢了,真的没有积分了。894563420@qq.com
给你一个实际在线的例子吧 www.35dalu.com/info/fabu 看看里面有2个省市区 三级联动。


http://download.csdn.net/detail/jam00/5079966
或者留个邮箱直接发给你


谢了,真的没有积分了。894563420@qq.com 啥也不说了,分都给你了

谢谢大家的指导了,但是jam00这位仁兄在QQ邮箱上不厌其烦的指导,终于让我弄出来了,所以只有把分给他了

关于php+mysql+ajax省市区三级联动菜单,求帮助啊

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频


网友评论

文明上网理性发言,请遵守 新闻评论服务协议

我要评论
  • 关于php+mysql+ajax省市区三级联动菜单,求帮助啊
  • 专题推荐

    作者信息
    关于php+mysql+ajax省市区三级联动菜单,求帮助啊

    认证0级讲师

    推荐视频教程
  • 关于php+mysql+ajax省市区三级联动菜单,求帮助啊javascript初级视频教程
  • 关于php+mysql+ajax省市区三级联动菜单,求帮助啊jquery 基础视频教程
  • 视频教程分类