php 级联菜单列表类
【IT专家】如何使用jQuery在PHP中创建级联下拉列表
本文由我司收集整编,推荐下载,如有疑问,请与我司联系如何使用jQuery在PHP中创建级联下拉列表如何使用jQuery在PHP中创建级联下拉列表[英]How to make a Cascading Drop Down List in PHP using jQuery I have database consists of countries and cities. 我的数据库由国家和城市组成。
First Case - Successfully done: 第一个案例- 成功完成: Country list gets populated in drop box on page load 国家/地区列表在页面加载时在下拉框中填充 City list gets populated in drop box on page load - populated city list is based on the default country. 城市列表在页面加载的下拉框中填充- 填充的城市列表基于默认国家/地区。
Second Case - Couldn’t make it: 第二种情况- 无法做到: User changes country 用户更改国家/地 City list will be changed according to selected country 城市列表将根据所选国家/地区进行更改 I know i have to use jQuery/Ajax. I tried but i couldn’t solve my problem due to my lack of programming experience. My list is fetched from database not XML. I just need a quick solution, i need to keep it simple and stupid. 我知道我必须使用jQuery / Ajax。
(实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单
(实⽤篇)jQuery+PHP+MySQL实现⼆级联动下拉菜单⼆级联动下拉菜单选择应⽤在在很多地⽅,⽐如说省市下拉联动,商品⼤⼩类下拉选择联动。
本⽂将通过实例讲解使⽤jQuery+PHP+MySQL来实现⼤⼩分类⼆级下拉联动效果。
先看下效果实现的效果就是当选择⼤类时,⼩类下拉框⾥的选项内容也随着改变。
实现原理:根据⼤类的值,通过jQuery把值传给后台PHP处理,PHP通过查询MySQl数据库,得到相应的⼩类,并返回JSON数据给前端处理。
XHTML⾸先我们要建⽴两个下拉选择框,第⼀个是⼤类,第⼆个是⼩类。
⼤类的值可以是预先写好,也可以是从数据库读取。
<label>⼤类:</label><select name="bigname" id="bigname"><option value="1">前端技术</option><option value="2">程序开发</option><option value="3">数据库</option></select><label>⼩类:</label><select name="smallname" id="smallname"></select>jQuery先写⼀个函数,获取⼤类选择框的值,并通过$.getJSON⽅法传递给后台server.php,读取后台返回的JSON数据,并通过$.each⽅法遍历JSON数据,将对应的值写⼊⼀个option字符串,最后将option追加到⼩类⾥。
function getSelectVal(){$.getJSON("server.php",{bigname:$("#bigname").val()},function(json){var smallname = $("#smallname");$("option",smallname).remove(); //清空原有的选项$.each(json,function(index,array){var option = "<option value='"+array['id']+"'>"+array['title']+"</option>";smallname.append(option);});});}注意,在遍历JSON数据追加之前⼀定要先将⼩类⾥的原有的项清空。
三级级联下拉菜单的实现流程
三级级联下拉菜单的实现流程1.首先,我们需要在页面上创建三个下拉菜单元素。
First, we need to create three drop-down menu elements on the page.2.然后,我们要填充第一个下拉菜单,以显示第一级的选项。
Then, we will populate the first drop-down menu to display the options for the first level.3.接着,我们需要为第一个下拉菜单添加一个事件监听器,以便在选择其中一个选项时触发下一个菜单的更新。
Next, we need to add an event listener to the first drop-down menu, so that selecting an option triggers an update to the next menu.4.然后,我们将填充第二个下拉菜单,以显示第二级的选项。
Then, we will populate the second drop-down menu to display the options for the second level.5.接下来,我们需要为第二个下拉菜单添加事件监听器,以便在选择其中一个选项时触发第三个菜单的更新。
After that, we need to add an event listener to thesecond drop-down menu, so that selecting an option triggersan update to the third menu.6.然后,我们将填充第三个下拉菜单,以显示第三级的选项。
Next, we will populate the third drop-down menu todisplay the options for the third level.7.最后,当用户选择完最后一级的选项后,我们可以获取所选择的值并进行相应的处理。
级联菜单、分类下拉列表填充
步骤一:输入如下数据,一列为一类,首行为分类名称
省广东湖南广西广州市江门市长沙市株洲市南宁市广东广州市长沙市南宁市天河区新会区芙蓉区天元区江南区湖南江门市株洲市柳州市白云区蓬江区天心区芦淞区青秀区广西越秀区
番禺区
荔湾区
步骤二:如下所示,选中黄色区域,然后执行“数据”->“有效性”,如右图设置
省
广东
步骤三:选中蓝色区域,执行“插入”->“名称”->“指定”,如右图
步骤四:选中绿色区域,执行“数据”->“有效性”,如右图
省市
广东江门市
广东广州市
湖南长沙市
步骤五同步骤四
省市区
广东广州市天河区
湖南长沙市芙蓉区
广西南宁市江南区
小结:用excel做级联菜单,或者说分类填充,
主要使用到的操作是“数据”->“有效性”和“插入”->“名称”->“指定”,我们需要针对
柳州市城中区柳北区
指定”,我们需要针对实际情况灵活使用。
级联下拉框制作终极教程
级联下拉框制作终极教程1.先插入一个表单,在表单中插入两个下拉框。
<form id="form1" name="userinfo" method="post" action="">所在城市:<select name="szSheng" onchange="chsel()"><option value="XXX" selected="selected">请选择省份……</option></select><select name="szShi"></select></form>2.访问数据库中的省表,将省表中的省表名和省id填充到第一个(省)下拉列表框中去。
<%set rs_s=server.createobject("adodb.recordset")sql="select * from province order by shengorder"rs_s.open sql,conn,1,1while not rs_s.eof%><option value="<%=rs_s("ShengNo")%>" ><%=trim(rs_s("ShengName"))%> </option> <%rs_s.movenextwendrs_s.closeset rs_s=nothing%>3.用JavaScript建立一个数组,将市表中所有的市填充到该数组中。
<script language="JavaScript" type="text/javascript"><%dim sql,i,jset rs_s=server.createobject("adodb.recordset")sql="select * from province order by shengorder"rs_s.open sql,conn,1,1%>var selects=[];selects['xxx']=new Array(new Option('请选择城市……','xxx'));<%for i=1 to rs_s.recordcount%>selects['<%=rs_s("ShengNo")%>']=new Array(<%set rs_s1=server.createobject("adodb.recordset")sql="select * from city where shengid="&rs_s("id")&" order by shiorder"rs_s1.open sql,conn,1,1if rs_s1.recordcount>0 thenfor j=1 to rs_s1.recordcountif j=rs_s1.recordcount then%>new Option('<%=trim(rs_s1("shiname"))%>','<%=trim(rs_s1("shiNo"))%>')); <%else%>new Option('<%=trim(rs_s1("shiname"))%>','<%=trim(rs_s1("shiNo"))%>'), <%end ifrs_s1.movenextnextelse%>new Option('','0'));<%end ifrs_s1.closeset rs_s1=nothingrs_s.movenextnextrs_s.closeset rs_s=nothing%></script>这样,自动生成的selects数组中的各个元素如下:var selects=[];selects['xxx']=new Array(new Option('请选择城市……','xxx'));selects['4']=new Array(new Option('上海市','1'));selects['1']=new Array(new Option('合肥市','1'),new Option('芜湖市','2'),new Option('安庆市','3'),new Option('巢湖市','4'),new Option('淮南市','6'),new Option('马鞍山市','7'),new Option('宿州市','8'),new Option('宣州市','9'),new Option('蚌埠市','10'),new Option('池州地区','11'),new Option('阜阳市','12'),new Option('淮北市','13'),new Option('黄山市','14'),new Option('六安市','15'),new Option('铜陵市','16'),new Option('亳州市','17')); selects['2']=new Array(new Option('济南市','1'),new Option('东营市','2'),new Option('滨州地区','3'),new Option('淄博市','4'),new Option('德州市','5'),new Option('济宁市','6'),new Option('聊城地区','7'),new Option('临沂市','8'),new Option('青岛市','10'),new Option('日照市','11'),new Option('威海市','12'),new Option('泰安市','13'),new Option('潍坊市','14'),new Option('烟台市','15'),new Option('菏泽地区','16'),new Option('枣庄市','171')); selects['3']=new Array(new Option('南京市','1'),new Option('淮阴市','2'),new Option('常州市','3'),new Option('连云港市','4'),new Option('南通市','5'),new Option('徐州市','6'),new Option('苏州市','7'),new Option('无锡市','8'),new Option('盐城市','9'),new Option('扬州市','10'),new Option('镇江市','11'),new Option('泰州市','12'),selects['0']=new Array(new Option('北京市','1'));4.编写级联触发程序,在省的下拉框onchange事件中触发。
项目2-级联菜单
级联菜单级联菜单可以很灵活地在页面上分级显示不同类别的项目,当用户将鼠标悬停在菜单项上,菜单项下会显示子菜单项目。
第1步:创建基本的导航菜单结构在网页主体<body>里面,用一个div来占位,这个div就是所有导航菜单的容器,为它取个名字ID="Nav_Menu"。
在该Div容器里面,用无序列表ul和li来组合出一级导航的菜单。
在网页里面,就是这个样子:接下来,在一级导航下加入二级导航,我们还是用无序列表ul和li来组合:注意:原来一级导航1 后面的</li>要放在最后!这个li里面又有一个ul- li组合,作为二级菜单。
类似可以在所有一级导航下面添加二级导航菜单,用复制粘贴就可以了:没有做样式设计的二级菜单在网页里面显示应该是这样的:为了后面在样式表能灵活设置样式,为各级html占位标签取名如下:主要是div容器取名Nav_Menu,主菜单的ul取名Main_Menu,主菜单下的li项取类名Menu_List,子菜单的ul取类名Drop_Menu,子菜单的li项取类名Drop_List。
网页部分到这里就可以了,主要的工作在样式表里面,我们在网页头部加上样式表链接。
第2步:样式表的设计样式表取名为style.css,放在网站的css文件夹里,样式表里面的设计如下:1、最外面的DIV容器的样式如下:在网页body中居中,占50个字符宽度,字符默认大小。
2、#Nav_Menu下的所有ul的共性样式:在名为Nav_Menu的div容器里的所有ul,内外都不留白,并且所有ul里面都不要项目符号,宽度占据父容器的100%。
3、#Nav_Menu容器里,一级菜单下的li项的样式:这些设置好以后,应该能看见一级菜单效果如下:4、二级菜单的整体,Ul项的样式:默认是不显示出来的,display: none;5、二级菜单下的li项的样式:居中,字体大小为标准的90%,背景和字体颜色也重新设计。
PHPAJAX2级联动下拉列表(...
PHPAJAX2级联动下拉列表(...PHP+AJAX2级联动下拉列表(简单好用)这次给大家展示的是非常常用的一个ajax功能--联动下拉列表,本程序采用2级联动,根据数据库的内容用ajax处理下拉列表内容,实现根据用户需求取得下拉选项,交互性强,更新容易。
废话少说,不如正题,这次依然象往常一样提供截图和源码下载,首先还是AJAX框架:var http_request=false;function send_request(url){//初始化,指定处理函数,发送请求的函数http_request=false;//开始初始化XMLHttpRequest对象if(window.XMLHttpRequest){//Mozilla浏览器http_request=new XMLHttpRequest();if(http_request.overrideMimeType){//设置MIME类别http_request.overrideMimeType("text/xml");}}else if(window.ActiveXObject){//IE浏览器try{http_request=new ActiveXObject("Msxml2.XMLHttp");}catch(e){try{http_request=new ActiveXobject("Microsoft.XMLHttp");}catch(e){}}}if(!http_request){//异常,创建对象实例失败window.alert("创建XMLHttp对象失败!");return false;}http_request.onreadystatechange=processrequest;//确定发送请求方式,URL,及是否同步执行下段代码http_request.open("GET",url,true);http_request.send(null);}//处理返回信息的函数function processrequest(){if(http_request.readyState==4){//判断对象状态if(http_request.status==200){//信息已成功返回,开始处理信息document.getElementById(reobj).innerHTML=http_request.respons eText;}else{//页面不正常alert("您所请求的页面不正常!");}}}function getclass(obj){var pid=document.form1.select1.value;document.getElementById(obj).innerHTML="<option>loading...</o ption>";send_request(‘doclass.php?pid=‘+pid);reobj=obj;}这个程序的核心就是动态添加<option>......</option>服务器端是进行数据的检索,很简单:<?phpheader("Content-type: text/html;charset=GBK");//输出编码,避免中文乱码$pid=$_GET[‘pid‘];$db=mysql_connect("localhost","root","7529639"); //创建数据库连接mysql_query("set names ‘GBK‘");mysql_select_db("menuclass");$sql="select classname from menu where parentid=".$pid."";$result=mysql_query($sql);//循环列出选项while($rows=mysql_fetch_array($result)){echo ‘<option>‘;echo $rows[‘classname‘];echo "</option>\n";}>再看看列表页面的html:<script language="javascript" src="ajaxmenu.js"></script><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>ajax2级联动菜单演示</title></head><body><form name="form1"><select name="select1" id="class1" style="width:100;" onChange="getclass(‘class2‘);"><option selected="selected"></option><option value="1">大类1</option><option value="2">大类2</option></select><select name="select2"id="class2" style="width:100;"></select></form></body></html>附件1.jpg(1.99 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表2.jpg(3.25 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表3.jpg(5.92 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表4.jpg(5.62 KB)2007-9-24 10:04PHP+AJAX2级联动下拉列表ajaxdemo.rar(1.66 KB)2007-9-24 10:05, 下载次数: 3PHP+AJAX2级联动下拉列表搜索更多相关主题的帖子: AJAX PHP列表台州南开技术小组专门用PHP+MYSQL技术进行Web(网站、平台、系统等)开发,凭借其开发产品的非凡速度、领先的技术优势、富于创新的开发团队,为众多行业门户、专业型站点提供最有优质的服务和技术保障。
php的list方法
php的list方法PHP的list方法是一种非常常用的数组解构赋值方法。
它可以将一个数组中的值一次性地赋给一组变量,从而方便地对数组进行操作和处理。
在本文中,我们将详细介绍list方法的使用方式和注意事项。
让我们来看一下list方法的基本语法:```list($var1, $var2, ...) = $array;```其中,$array是一个包含多个元素的数组,$var1、$var2等是一组变量,用于接收数组中的对应值。
需要注意的是,变量的数量要和数组的元素数量相等,否则会导致赋值不完整或者出错。
在使用list方法时,我们可以使用不同的方式来赋值给变量。
下面是一些常见的示例:1. 将数组的元素依次赋给变量:```php$array = [1, 2, 3];list($var1, $var2, $var3) = $array;echo $var1; // 输出 1echo $var2; // 输出 2echo $var3; // 输出 3```2. 忽略某些元素:```php$array = [1, 2, 3];list($var1, , $var3) = $array;echo $var1; // 输出 1echo $var3; // 输出 3```3. 交换变量的值:```php$var1 = 1;$var2 = 2;list($var2, $var1) = [$var1, $var2];echo $var1; // 输出 2echo $var2; // 输出 1```除了上述示例中的基本使用方式外,list方法还可以用于处理多维数组和关联数组。
下面是一些示例:1. 处理多维数组:```php$array = [1, [2, 3], 4];list($var1, list($var2, $var3), $var4) = $array;echo $var1; // 输出 1echo $var2; // 输出 2echo $var3; // 输出 3echo $var4; // 输出 4```2. 处理关联数组:```php$array = ['name' => 'John', 'age' => 20];list('name' => $name, 'age' => $age) = $array;echo $name; // 输出 Johnecho $age; // 输出 20```需要注意的是,在处理关联数组时,赋值的顺序要和数组定义的顺序一致。
phpcms 城市级联用法
phpcms 城市级联用法PHPcms是一款基于PHP语言开发的内容管理系统,它提供了城市级联的功能,可以方便地实现省市区三级联动的效果。
下面将介绍PHPcms城市级联的用法。
一、准备工作在使用城市级联功能之前,需要先在PHPcms后台中安装城市数据模型。
具体操作步骤如下:1. 登录PHPcms后台,进入“模型管理”页面;2. 点击“添加模型”按钮,选择“城市数据模型”;3. 填写模型名称、数据表名等信息,点击“提交”按钮;4. 安装城市数据模型成功后,进入“模型管理”页面,可以看到已经添加了一个名为“城市数据模型”的模型。
二、使用城市级联功能在安装好城市数据模型之后,就可以开始使用城市级联功能了。
具体操作步骤如下:1. 在需要使用城市级联的页面中,添加以下代码:```<script type="text/javascript" src="{php echoAPP_PATH;?>api.php?op=js&name=city"></script>```2. 在需要使用城市级联的表单中,添加以下代码:```<select name="province" id="province"onchange="load_city(this.value)"><option value="">请选择省份</option>{php $province = get_province();}{loop $province $p}<option value="{$p['linkageid']}">{$p['name']}</option>{/loop}</select><select name="city" id="city" onchange="load_area(this.value)"> <option value="">请选择城市</option></select><select name="area" id="area"><option value="">请选择区县</option></select>```3. 在页面底部添加以下代码:```<script type="text/javascript">function load_city(province_id) {$("#city").html("<option value=''>请选择城市</option>"); $("#area").html("<option value=''>请选择区县</option>");if(province_id) {var url = "{php echoAPP_PATH;?>index.php?m=content&c=index&a=public_get_are a&province_id="+province_id+"&level=2";$.get(url,function(data){$("#city").html(data);});}}function load_area(city_id) {$("#area").html("<option value=''>请选择区县</option>");if(city_id) {var url = "{php echoAPP_PATH;?>index.php?m=content&c=index&a=public_get_are a&city_id="+city_id+"&level=3";$.get(url,function(data){$("#area").html(data);});}}</script>```4. 在PHPcms后台中,创建一个名为“public_get_area”的控制器,代码如下:```<?phpdefined('IN_PHPCMS') or exit('No permission resources.');class index {public function public_get_area() {$province_id = intval($_GET['province_id']);$city_id = intval($_GET['city_id']);$level = intval($_GET['level']);if($province_id) {$datas = getcache('linkage','commons');foreach($datas as $r) {if($r['parentid'] == $province_id) {$citys[] = $r;}}if($level == 2) {$html = "<option value=''>请选择城市</option>"; foreach($citys as $r) {$html .= "<optionvalue='{$r['linkageid']}'>{$r['name']}</option>"; }echo $html;} elseif($level == 3) {$html = "<option value=''>请选择区县</option>"; foreach($citys as $r) {$html .= "<optionvalue='{$r['linkageid']}'>{$r['name']}</option>"; }echo $html;}} elseif($city_id) {$datas = getcache('linkage','commons');foreach($datas as $r) {if($r['parentid'] == $city_id) {$areas[] = $r;}}$html = "<option value=''>请选择区县</option>";foreach($areas as $r) {$html .= "<optionvalue='{$r['linkageid']}'>{$r['name']}</option>";}echo $html;}}}>```至此,城市级联功能的使用就完成了。
php实现菜单无限极分类
php实现菜单⽆限极分类⼀、数据表结构CREATE TABLE `t_admin_privilege` (`f_id` int(11) NOT NULL AUTO_INCREMENT,`f_name` varchar(50) DEFAULT NULL COMMENT '⽬录名称',`f_parent_id` int(11) DEFAULT '0' COMMENT '⽗级id',`f_type` tinyint(4) DEFAULT NULL COMMENT '第⼏级⽬录',`f_url` varchar(255) DEFAULT NULL COMMENT '⽬录的链接地址',`f_createtime` int(10) DEFAULT NULL COMMENT '创建时间',`f_is_menu` tinyint(1) DEFAULT '1' COMMENT '1是菜单栏 2不是菜单栏',`f_icon` varchar(50) DEFAULT NULL COMMENT '⼩图标',`f_is_del` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否删除 1正在使⽤(未删除) 2删除',`f_sort` tinyint(5) DEFAULT NULL COMMENT '排序',PRIMARY KEY (`f_id`)) ENGINE=InnoDB AUTO_INCREMENT=335 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT⼆、后台取数据(使⽤Yii框架)header("content-type:text/html;charset=utf-8"); //避免提⽰中⽂乱码$html = array();//获取菜单栏所有的数据$menu_record = T_admin_privilege::model()->findAll();$EData = new EData();$html['menu_list'] = $EData->push_info($menu_record);//1级⽬录$criteria_first = new CDbCriteria();$criteria_first->addCondition("f_type=1 AND f_is_menu=1 AND f_is_del=1");$criteria_first->order="f_id";//2级⽬录$criteria_second = new CDbCriteria();$criteria_second->addCondition("f_type=2 AND f_is_menu=1 AND f_is_del=1");$criteria_second->order="f_id";//3级⽬录$criteria_third = new CDbCriteria();$criteria_third->addCondition("f_type=3 AND f_is_menu=1 AND f_is_del=1");$criteria_third->order="f_id";//4级⽬录$criteria_fourth = new CDbCriteria();$criteria_fourth->addCondition("f_type=4 AND f_is_menu=1 AND f_is_del=1");$criteria_fourth->order="f_id";$menu_array = array();//菜单分为4级$first_list = T_admin_privilege::model()->findAll($criteria_first);$html['first_num'] = $first_num = count($first_list);$second_list = T_admin_privilege::model()->findAll($criteria_second);$html['second_num'] = $second_num = count($second_list);$third_list = T_admin_privilege::model()->findAll($criteria_third);$html['third_num'] = $third_num = count($third_list);$fourth_list = T_admin_privilege::model()->findAll($criteria_fourth);$html['fourth_num'] = $third_num = count($fourth_list);//⼀级⽬录foreach ($first_list as$first){$menu_array[$first->f_id] = array();}//⼆级⽬录foreach ($second_list as$second){$menu_array[$second->f_parent_id][$second->f_id] = array();}//三级⽬录foreach ($third_list as$third){foreach ($menu_array as$first_k => $menu){foreach ($menu as$second_k => $next){if ($second_k == $third->f_parent_id){$menu_array[$first_k][$second_k][$third->f_id] = array();}}}}//四级⽬录foreach ($fourth_list as$fourth){foreach ($menu_array as$first_k=>$second_menu){foreach ($second_menu as$second_k => $third_menu){foreach ($third_menu as$third_k => $firth_menu){if ($third_k == $fourth->f_parent_id){$menu_array[$first_k][$second_k][$third_k][$fourth->f_id] = 0;}}}}}$html['menu_array'] = $menu_array;//把数据单独放在⼀个页⾯,通过ajax加载$out = array('error' => 0,'content' => $this->renderPartial("ajax_get_menu_list_page", $html, true));echo CJSON::encode($out);三、html页⾯(ajax_get_menu_list_page页⾯,在pixed-admin框架下,也可引⼊jQuery,bootstrap修改样式)<div class="col-sm-12 menu_list" id="menu_list"><!--遍历⼀级⽬录 start--><?php foreach ($menu_array as $k=>$first_menu){?><div class="first_menu_list"><div class="first_menu menu"><?php if(count($first_menu)>0) {?><a href='javascript:;' class="is_show" f_id="<?php echo $menu_list[$k]['f_id'];?>">+</a><?php }else{?><i style="padding: 0 9px"></i><?php }?><input type="text" class="first_title title" name="first_title" value="<?php echo $menu_list[$k]['f_name']?>" f_id="<?php echo $menu_list[$k]['f_id'];?>" f_parent_id="0"><?php if(count($first_menu)<1) {?><input type="text" placeholder="请填写⽬录的路径地址" f_id="<?php echo $menu_list[$k]['f_id']?>" value="<?php echo $menu_list[$k]['f_url']?>" class="path_address"<div class="operation"><?php if (empty($menu_list[$k]['f_url']) ){?><a class="btn btn-xs btn-add second_add">添加</a><?php }?><?php if (count($first_menu)<=1){?><a class="btn btn-xs btn-del del first_del" f_id="<?php echo $menu_list[$k]['f_id']?>">删除</a><?php }?></div></div><!--遍历⼆级⽬录 start--><?php if(count($first_menu)>0){foreach ($first_menu as $first_k=>$second_menu){?><div class="second_menu_list <?php echo $menu_list[$first_k]['f_parent_id'];?>"><div class="second_menu menu"><input type="text" class="second_title title" name="second_title" value="<?php echo $menu_list[$first_k]['f_name']?>" f_id="<?php echo $menu_list[$first_k]['f_id'];?>" f_parent_id="<?php echo $menu_list[ <?php if(count($second_menu)<1) {?><input type="text" placeholder="请填写⽬录的路径地址" f_id="<?php echo $menu_list[$first_k]['f_id']?>" value="<?php echo $menu_list[$first_k]['f_url']?>"<div class="operation"><?php if(empty($menu_list[$first_k]['f_url'])) {?><a class="btn btn-xs btn-add third_add">添加</a><?php }?><?php if (count($second_menu)<=1){?><a class="btn btn-xs btn-del del second_del" f_id="<?php echo $menu_list[$first_k]['f_id']?>">删除</a><?php }?></div></div><!--遍历三级⽬录 start--><?php if (count($second_menu)>0){foreach ($second_menu as $second_k=>$third_menu){?><div class="third_menu_list"><div class="third_menu menu"><input type="text" class="third_title title" name="third_title" value="<?php echo $menu_list[$second_k]['f_name']?>" f_id="<?php echo $menu_list[$second_k]['f_id']?>" f_parent_id="<?php echo $menu <?php if(count($third_menu)<1) {?><input type="text" placeholder="请填写⽬录的路径地址" f_id="<?php echo $menu_list[$second_k]['f_id']?>" value="<?php echo $menu_list[$second_k]['f_url']?>"<div class="operation"><?php if(count($third_menu)>1) {?><a class="btn btn-xs btn-add fourth_add">添加</a><?php }?><?php if (count($third_menu)<=1){?><a class="btn btn-xs btn-del del third_del" f_id="<?php echo $menu_list[$second_k]['f_id']?>">删除</a><?php }?></div></div><!--遍历四级⽬录 start--><?php if (count($third_menu)>0){foreach ($third_menu as $third_k=>$fourth_menu){?><div class="fourth_menu menu"><input type="text" class="fourth_title title" name="fourth_title" value="<?php echo $menu_list[$third_k]['f_name']?>" f_id="<?php echo $menu_list[$third_k]['f_id']?>" f_parent_id="<?php echo $menu<input type="text" placeholder="请填写⽬录的路径地址" f_id="<?php echo $menu_list[$third_k]['f_id']?>" value="<?php echo $menu_list[$third_k]['f_url']?>" class="path_address"/><div class="operation"><a class="btn btn-xs btn-del del fourth_del" f_id="<?php echo $menu_list[$third_k]['f_id']?>">删除</a></div></div><?php }}?><!--遍历四级⽬录 end--></div><?php }}?><!--遍历三级⽬录 end--></div><?php }}?><!--遍历⼆级⽬录 end--></div><?php }?><!--遍历⼀级⽬录 end--></div>四、html页⾯(menu_list_page页⾯,在pixed-admin框架下,也可引⼊jQuery,bootstrap修改样式)、<div class="page-body"><div class="panel"><div class="form-group " id="get_menu_list"></div></div></div>五、css样式 *{margin: 0;padding: 0;}.add {margin-right: 10px;}.menu_list { margin:0px 20px 40px 20px;position: relative}.menu { height: 25px;}.first_menu {font-weight: bolder; font-size: 20px;margin:30px 15px 0px 15px;}.second_menu { padding: 25px 45px; font-weight: bold; font-size: 16px;}.third_menu { padding: 20px 0px 20px 90px;font-size: 14px;}.fourth_menu{padding: 20px 135px;}input {padding-left: 10px;border: none;margin-right: 30px;}.manual_content { width:450px;}.manual_content::after{content: '';}.manual_content a{float: right;margin-right: 10px;}.manual_content a:active::after{content: '';}.ui-accordion-header{border: none;}.ui-accordion-header.ui-state-active:after{content:""}a{display: inline-block}a:link{text-decoration: none}a:active{text-decoration: none}a:visited{text-decoration: none}a:hover{text-decoration: none}/*.second_menu_list{display: none}*/.is_show{font-size: 30px;}.menu_list{padding-right: 60px;}.btn-del,.btn-add{margin: -30px 10px 0 10px;}.btn-add{position: absolute; right:35%;}.btn-del{position:absolute;right: 30%;}.menu .path_address{font-size: 14px;width:400px;margin-left: 30px;font-weight: normal}六、js//通过ajax,把数据加载到menu_list_page页⾯$.ajax({url : '/system/ajax_get_menu_list_page',type : 'post',async : false,data : {},dataType : 'json',success : function(res){if( res.error == 0){$("#get_menu_list").prepend(res.content);}else{}}});//添加其他⽅法动态实现⽬录的增删改查。
多级列表导航菜单的实现方法
多级列表导航菜单的实现方法
多级列表导航菜单的实现方法有多种,以下是一些常见的方法:
1. HTML和CSS:使用HTML和CSS来创建多级列表导航菜单是最基础的方法。
你可以使用嵌套的`<ul>`和`<li>`元素来创建多级列表,然后通过CSS来样式化这些元素,包括设置背景色、字体样式、边框、定位等。
这种方法虽然简单,但是需要手动编写大量的HTML和CSS代码,且可维护性
较差。
2. JavaScript库:有一些JavaScript库可以帮助你快速实现多级列表导航
菜单,如jQuery、Bootstrap等。
这些库提供了丰富的插件和工具,可以
简化菜单的创建和样式化过程。
使用这些库,你可以通过简单的代码实现复杂的多级列表导航菜单。
3. 服务器端编程语言:如果你熟悉服务器端编程语言(如PHP、Python、Java等),你可以使用这些语言来动态生成多级列表导航菜单。
通过从数
据库或其他数据源中获取数据,然后在服务器端生成HTML和CSS代码,
最终将生成的代码发送到客户端浏览器。
这种方法可以实现更复杂的动态功能,如菜单项的增删改查等。
4. 响应式设计框架:一些响应式设计框架(如Bootstrap、Foundation等)也提供了多级列表导航菜单的实现方法。
这些框架使用HTML、CSS和
JavaScript技术,提供了丰富的组件和工具,可以帮助你快速创建具有良好响应式效果的多级列表导航菜单。
总的来说,选择哪种方法实现多级列表导航菜单取决于你的具体需求和技术能力。
你可以根据自己的实际情况选择最适合你的方法。
Bootstrap每天必学之级联下拉菜单
Bootstrap每天必学之级联下拉菜单本⽂将介绍⾃定义的bootstrap级联下拉菜单,主要应⽤场合有省市级关联菜单等等,那么就先拿这个例⼦来讲,当然其他场景的关联菜单也同样适⽤。
说实话,封装好⼀个通⽤的组件还是需要花费很多精⼒的和时间的,所谓通⽤,⾃然要考虑周全,叹!这次整理的Bootstrap关联select,⾥⾯也涉及到了很多jquery、ajax、springMVC等等知识点,可谓包罗万象!⾸先,请允许我代表该⾃定义组件做⼀番⼩⼩的介绍。
“hi,你好,我叫box.js,主⼈给我起的名字,其实呢,挺俗的。
我主要通过为select组件增加两个⾃定义属性来完成相应的数据加载,数据请求使⽤了ajax,后端数据处理使⽤了springMVC(当然其他⽅式也可以,只需要返回对应的json数据即可),使⽤起来呢,就⾮常⾮常简单了!”⼀、界⾯效果当然了,从界⾯上完全看不出来⼀个组件封装的好坏,但⾄少,你感觉很简洁漂亮,那么好了,有了这层印象,你是否有兴趣继续看下去?我想答案是肯定的。
⼆、使⽤⽅法①、procity.jsp⾸先呢,在页⾯上加载box.js(稍候介绍,⾄于其他的bootstrap的css和js,不在本章介绍范围内,略过),同时呢,创建两个select,具体格式见如下:<script type="text/javascript" src="${ctx}/components/yunm/box.js"></script><div class="form-group"><div class="row"><div class="col-md-6"><select name="province_code" class="form-control combox" ref="city_select"refUrl="${ctx}/procity?pro_code={value}&city_code=HSLY"></select></div><div class="col-md-6"><select name="city_code" id="city_select" class="form-control"></select></div></div></div><script type="text/javascript"><!--$(function() {if ($box) {$("box", $p).combox();}});//--></script>·两个select组件,⼀个为province_code、⼀个为city_code。
PHP实现三级联动
PHP实现三级联动controller 控制器class San extends Controller{function tree(){$list = Category::where('pid', 0)->select();$this->assign('list', $list);return view();}function getTree(){$id = input('id');$getPid= \app\admin\model\San::getPid($id);return json(['code' => 200, 'msg' => 'success', 'data' => $getPid]);}}view 视图<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><link rel="stylesheet" href="https:///twitter-bootstrap/3.3.7/css/bootstrap.min.css"><script src="https:///jquery/2.1.1/jquery.min.js"></script><script src="https:///twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script></head><body><form action=""><select name="one" id="one"><option value="">⼀级</option>{foreach $list as $v}<option value="{$v.id}">{$v.cate_name}</option>{/foreach}</select><select name="two" id="two"><option value="">⼆级</option></select><select name="tree" id="tree"><option value="">三级</option></select></form></body></html><script>$('#one').change(function (){var id=$('#one').val()$.ajax({url:'/san/getTree',data:{id:id,},type:'POST',dataType:'JSON',success:function (e){console.log(e)// if(e.code==200){// var str='<option>⼆级</option>';// $.each(e.data,function (i,v){// str+= '<option value="+v.id+">'+v.cate_name+'</option>';// })// $('#two').html(str);// }if(e.code==200){var str = '<option value="">请选择⼆级分类</option>';$.each(e.data, function(i,v){str += '<option value="' + v.id + '">' + v.cate_name + '</option>'; });$('#two').html(str);}},})})$('#two').change(function (){var id=$('#two').val()$.ajax({url:'/san/getTree',data:{id:id,},type:'POST',dataType:'JSON',success:function (e){console.log(e)if(e.code==200){var str='';str+='<option>⼆级</option>';$.each(e.data,function (i,v){str+= '<option value="+v.id+">'+v.cate_name+'</option>';})$('#tree').html(str);}// if(e.code==200){// var str = '<option value="">请选择三级分类</option>';// $.each(e.data, function(i,v){// str += '<option value="' + v.id + '">' + v.cate_name + '</option>'; // });// $('#tree').html(str);// }},})})</script>模型class San extends Model{protected $table='pyg_category';static function getPid($id){return self::where('pid',$id)->select();}}路由\think\Route::get('tree','admin/san/tree');\think\Route::post('san/getTree','admin/san/getTree');。
bootstrap 级联表格
序号一、引言Bootstrap 级联表格是一种在网页开发中常用的技术,它能够帮助用户实现表格数据的级联显示和交互。
在实际项目中,我们经常会遇到需要展示复杂数据关系的场景,此时使用级联表格能够更好地展示数据之间的层级关系,提升用户的交互体验和数据的可视化效果。
序号二、级联表格基本原理级联表格的基本原理是在一个表格中嵌套另一个表格,通过相应的事件来控制子表格的显示和隐藏,从而实现数据的级联展示。
在Bootstrap中,我们可以通过一些定制的CSS和JavaScript代码来实现级联表格的功能,具体操作将在下文中进行介绍。
序号三、级联表格的实现步骤1. 设定主表格和子表格的HTML结构在HTML中,首先需要设置主表格和子表格的基本结构。
我们可以使用`<table>`标签来创建表格,使用`<tr>`和`<td>`标签来创建行和列,以展示主表格中的数据;我们也可以在`<td>`中嵌套另一个`<table>`来创建子表格的结构。
2. 使用JavaScript控制子表格的显示和隐藏在级联表格中,我们需要通过JavaScript来控制子表格的显示和隐藏。
通过为主表格中的某一列添加事件监听,当用户点击了该列时,会触发相应的JavaScript函数,从而实现子表格的显示。
3. 添加样式美化表格除了控制表格的显示,我们还可以通过CSS来对级联表格进行样式的美化,使其在页面中拥有更好的展示效果和用户交互体验。
序号四、级联表格的应用场景1. 商品类别与商品的级联展示在电商全球信息站中,商品类别与商品之间存在着一对多的关系,通过级联表格可以清晰地展示商品类别下的所有商品,提升用户浏览体验。
2. 地区与城市的级联展示在位置区域选择功能中,级联表格可以帮助用户清晰地选择地区与城市,而不需要进行繁琐的搜索和切换操作。
3. 项目管理中的任务与子任务展示在项目管理系统中,任务与子任务之间存在着类似树形结构的关系,通过级联表格可以清晰地展示任务与子任务之间的层级关系,方便用户查看和管理。
PHP实现菜单无限极分类
PHP实现菜单⽆限极分类菜单数据这⾥我们的菜单数据是临时数据, 没有从数据库中查询处理,数据基本和数据库中的的相似. 数据如下:$items = array(1 => array('id' => 1, 'pid' => 0, 'name' => '安徽省'),2 => array('id' => 2, 'pid' => 0, 'name' => '浙江省'),3 => array('id' => 3, 'pid' => 1, 'name' => '合肥市'),4 => array('id' => 4, 'pid' => 3, 'name' => '长丰县'),6 => array('id' => 6, 'pid' => 4, 'name' => '⼩溪村'),5 => array('id' => 5, 'pid' => 1, 'name' => '安庆市'),);这⾥的数据,也是更改为从数据库查询出来的真实数据.创建⼀个菜单⽆限极分类⽅法function generateTree($list, $pk = 'id', $pid = 'pid', $child = '_child', $root = 0){$tree = array();$packData = array();foreach ($list as$data) {$packData[$data[$pk]] = $data;}foreach ($packData as$key => $val) {if ($val[$pid] == $root) {//代表跟节点, 重点⼀$tree[] = &$packData[$key];} else {//找到其⽗类,重点⼆$packData[$val[$pid]][$child][] = &$packData[$key];}}return$tree;}分析代码上⾯的代码:这⾥⽐较重要的地⽅,就是代码中注释的地⽅,重点1, 重点2.1.⾸先遍历数组2.重点1的意思是,判断是不是根菜单,如果是那么就把根菜单数组,把数组的引⽤赋给新数组4.重点2的意思是, ⼦类数组赋值给⽗类数组中键为$child的数组5.最后得到的便是⼀个树状结构的数组,结果如下:Array ([0] => Array ( [id] => 1 [pid] => 0 [name] => 安徽省 [son] => Array ( [0] => Array ( [id] => 3 [pid] => 1 [name] => 合肥市 [son] => Array ( [0] => Array ( [id] => 4 [pid] => 3 [name] => 长丰县 [son] => Array ( [0] => Array ( [id] => 6 [pid] => 4 [nam[1] => Array ( [id] => 5 [pid] => 1 [name] => 安庆市 ) ) )[1] => Array ( [id] => 2 [pid] => 0 [name] => 浙江省 ) )。
PHP+mysql实现的三级联动菜单功能示例
PHP+mysql实现的三级联动菜单功能⽰例本⽂实例讲述了PHP+mysql实现的三级联动菜单功能。
分享给⼤家供⼤家参考,具体如下:数据库mysql-- 数据库: `student`---- ------------------------------------------------------------ 表的结构 `student`--CREATE TABLE `student` (`id` int(50) NOT NULL auto_increment,`name` varchar(50) collate utf8_unicode_ci NOT NULL,`dept` varchar(50) collate utf8_unicode_ci NOT NULL,`class` varchar(50) collate utf8_unicode_ci NOT NULL,`sex` varchar(50) collate utf8_unicode_ci NOT NULL,`dept_id` int(50) NOT NULL,`class_id` int(50) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=5 ;---- 导出表中的数据 `student`--INSERT INTO `student` (`id`, `name`, `dept`, `class`, `sex`, `dept_id`, `class_id`) VALUES(1, '计算机名字', '计算机⼯程系', '计061', '男', 1, 11),(2, '教计名字', '计算机⼯程系', '教技061', '男', 1, 14),(3, '管理名字', '管理系', '管理061', '⼥', 2, 21),(4, '机械名字', '机械⼯程系', '⾃动化061', '男', 3, 31);index.php代码:<?php$link=mysql_connect("localhost","root","") or die("数据库服务器连接错误".mysql_error());mysql_select_db("student",$link) or die("数据库访问错误".mysql_error());mysql_query("set character set gb2312");mysql_query("set names gb2312");><html><head><title>下拉框连动</title></head><body><script language="JavaScript">//⼆级菜单数组var subcat = new Array();<?php$i=0;$sql="select * from student";$query=mysql_query($sql,$link);while($arr=mysql_fetch_array($query)){echo "subcat[".$i++."] = new Array('".$arr["dept_id"]."','".$arr["class"]."','".$arr["class_id"]."');\n";}>//三级菜单数组var subcat2 = new Array();<?php$i=0;$sql="select * from student";$query=mysql_query($sql,$link);while($arr=mysql_fetch_array($query)){echo "subcat2[".$i++."] = new Array('".$arr["class_id"]."','".$arr["class"]."','".$arr["name"]."');\n";}>function changeselect1(locationid){document.form1.s2.length = 0;document.form1.s2.options[0] = new Option('22请选择22','');for (i=0; i<subcat.length; i++){if (subcat[i][0] == locationid){document.form1.s2.options[document.form1.s2.length] = new Option(subcat[i][1], subcat[i][2]);}}}function changeselect2(locationid){document.form1.s3.length = 0;document.form1.s3.options[0] = new Option('33请选择33','');for (i=0; i<subcat2.length; i++){if (subcat2[i][0] == locationid){document.form1.s3.options[document.form1.s3.length] = new Option(subcat2[i][2], subcat2[i][0]);}}}</script>三级联动演⽰:<BR><form name="form1"><select name="s1" onChange="changeselect1(this.value)"><option>--请选择--</option><option value=1>计算机⼯程系</option><option value=2>管理系</option><option value=3>机械⼯程系</option></select><select name="s2" onChange="changeselect2(this.value)"><option>--请选择--</option></select><select name="s3"><option>--请选择--</option></select></form></body></html>更多关于PHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家PHP程序设计有所帮助。
PHP+MySQL实现二级联动下拉列表
PHP+MySQL实现二级联动下拉列表1.Javascript在下拉列表的各个对象2.案例代码Liandong.php<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>PHP二级联动测试</title></head><body><?php$link=mysql_connect("localhost","root","12345678") or die("Could not connect:".mysql_error());mysql_select_db("phpquery") or die("Could not select database or database haven't created");//获取大类别$queryCol="select*from tb_firstcategory order by id";mysql_query("set names utf-8");$result1=mysql_query($queryCol) or die("Query failed:".mysql_error());$firstcategories=array();while($row1=mysql_fetch_array($result1)){$firstcategories[]=$row1;}mysql_free_result($result1);//获取小类别$querySecondCat="select*from tb_secondcategory order by fid desc";mysql_query("set names utf-8");if(!($result2=mysql_query($querySecondCat))){die("Cound not query tb_secondcategory list");}$secondcategories=array();while($row2=mysql_fetch_array($result2)){$secondcategories[]=$row2;}mysql_free_result($result2);?><script language="javascript">var secondcategoryCount;//存储小类别的数据form_secondcategory=new Array();<?php$num2=count($secondcategories); //获取小类别表中记录的个数?>secondcategoryCount=<?php echo $num2;?>;<?phpfor($j=0;$j<$num2;$j++){ //从0开始取出上面小类别数据填充的数组?>form_secondcategory[<?php echo $j;?>]=new Array("<?php echo $secondcategories[$j]['id'];?>","<?php echo $secondcategories[$j]['fid'];?>","<?php echo $secondcategories[$j]['categoryname'];?>");<?php } ?>function changeFirstCate(fid){document.form1.secondcategory.length=0;var id=id;var j;for(j=0;j<secondcategoryCount;j++){if(form_secondcategory[j][1]==fid){ //fid等于大类别的id document.form1.secondcategory.options[document.form1.secondcategory.length]=n ew Option(form_secondcategory[j][2],form_secondcategory[j][0]);}else{document.form1.secondcategory.options[0]=new Option('==选择小类别==',""); //label的value为空’’}}}//获取选中的列表文本function getCategory(){var first=document.getElementById("firstcategory");var index=first.selectedIndex;var second=document.getElementById("secondcategory");var index1=second.selectedIndex;alert(first.options[index].text+second.options[index1].text);}</script><form name="form1" method="post">选择:<select id="firstcategory" name="firstcategory" onchange="changeFirstCate(document.form1.firstcategory.options[document.form1. firstcategory.selectedIndex].value)" size="1"><option selected>==请选择大类别==</option><?php$num=count($firstcategories);for($i=0;$i<$num;$i++){?><option value="<?php echo $firstcategories[$i]['id'];?>"><?php echo $firstcategories[$i]['categoryname'];?></option><?php}?></select><select id="secondcategory" name="secondcategory"><option selected value="">==选择小类别==</option></select><input type="button" name="submit" value="提交" onclick="getCategory();"/></form><div id="rel" style="display:none;"></div></body></html>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<?php
/*
author: nick
date: 2009.05.17
功能:生成SeletTree
属性:
$result 结果集
$id_field 自身id字段
$parent_field 父类id字段
$option_text 选项显示名称
$select_name 下拉菜单的名称
$elected 默认选中
$no_top 是否需要顶层选项
$level 层深度
$parent_id 同层中的id
*/
class SelectTree{
public $result;
public $select_name;
public $option_text;
public $elected;
public $id_field;
public $parent_field;
public $no_top;
public $level;
public $parent_id;
public $getarray;
function
__construct($result,$id_field,$parent_field,$option_text,$select_name='',$elected=0,$no_top=0,$l evel=0,$parent_id=0){
$this->result =$result;
$this->id_field =$id_field;
$this->parent_field =$parent_field;
$this->option_text =$option_text;
$this->select_name =$select_name;
$this->elected =$elected;
$this->no_top =$no_top;
$this->level =$level;
$this->parent_id =$parent_id;
$this->getarray =self::getArray();
}
/*
功能:返回Tree二维数组
*/
function getArray(){
$arrays=array();
while($row=mysql_fetch_array($this->result)){
$arrays[$row[$this->parent_field]][$row[$this->id_field]]=$row;
}
return $arrays;
}
/*
功能:获取SelectTree
*/
function getSelectTree(){
$tree = '<select name="'.$this->select_name.'">';
if($no_top){
$tree .= '<option value="0">最顶层</option>';
}
self::buildTree($this->getarray,&$tree,$this->id_field,$this->option_text,$this->selected,$this->le vel,$this->parent_id); //生成树状结构
$tree .= '</select>';
return $tree;
}
/*
功能:递归构建树状结构
*/
function buildTree($array,&$tree,$option_value,$option_text,$selected,$level=0,$parent_id=0){ if(is_array($array[$parent_id])){
for($i=0;$i<$level;$i++)
$space .= ' '; //选项缩进深度
foreach($array[$parent_id] as $key => $value){
if($value[$option_value] == $selected){
$tree .= '<option value="'.$value[$option_value].'" selected="selected">'.$space.$value[$option_text]."</option>";
}else{
$tree .= '<option value="'.$value[$option_value].'">'.$space.$value[$option_text]."</option>";
}
$tree .=self::buildTree($array,&$tree,$option_value,$option_text,$selected,$level+1,$key);
}
}else{
$tree .= '';
}
}
}
/****************************************************************************/ header("CONTENT-TYPE:TEXT/HTML;CHARSET=UTF-8");
mysql_connect("localhost","root","root");
mysql_select_db("tree");
mysql_query('set names utf8');
$result = mysql_query("select * from tvmenu");
$tree=new SelectTree($result,'id','bid','name','tree');
echo $tree->getSelectTree();。