高手快来帮忙啊,急急急急急急急急急急急急急急急急急 http://fason.nease.net/samples/select/上面是阿信的无限级关联菜单,我想你可以试试,一次读取数据,之后的操作都不用读数据,速度非快。但不适合太多的关联,那样子会在第一次读取的时候花很多时间。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 kingerq(多菜鸟) 是呀,那个效果正是我想要的,不过我的数据都是从数据库里读出来的,需要改一些什么啊 莫名其妙搞这么多分类干什么?真的有这种必要吗?有些BBS上那些无级分类帖子,有谁会耐着性子看的? <?php /* # --------------------------------------------------------## Table structure for table `catalogs`#CREATE TABLE `catalogs` ( `menuid` int(11) NOT NULL auto_increment, `menustep` varchar(255) NOT NULL default '', `menuname` varchar(255) NOT NULL default '', KEY `menuid` (`menuid`)) TYPE=MyISAM AUTO_INCREMENT=103 ; */include("conn.php");$query = "select * from catalogs order by menuid,menustep";$result = mysql_query($query) or die(mysql_error());$script = '<SCRIPT LANGUAGE = JavaScript><!--//** Power by Fason(2004-3-11)//** Email:[email protected] dsy = new Dsy();';$members = array();while($re = mysql_fetch_array($result)){ $members[$re["menustep"]][] = array($re["menuname"],$re["menuid"]);}//print_r($members);foreach($members as $key => $val){ $arr .= 'dsy.add("'.$key.'",['; $value = ""; foreach($val as $k => $v){ if($value != "") $value .= ","; $value .= '["'.$v[0].'","'.$v[1].'"]'; } $arr .= $value."]);\n";}$script .= $arr;$script .= 'var s=["s1","s2","s3","s4","s5"];setup(dsy,s);//--></SCRIPT>'; 我也是改了一点,下面的是可以添加的到数据库的。你只要建立catalogs数据表就可以了。<?php /* # --------------------------------------------------------## Table structure for table `catalogs`#CREATE TABLE `catalogs` ( `menuid` int(11) NOT NULL auto_increment, `menustep` varchar(255) NOT NULL default '', `menuname` varchar(255) NOT NULL default '', KEY `menuid` (`menuid`)) TYPE=MyISAM AUTO_INCREMENT=103 ; */include("conn.php");if($_POST["menuname"] != ""){ $query = "insert into catalogs(menustep,menuname)values('".$_POST["menustep"]."','".$_POST["menuname"]."');"; $result = mysql_query($query); if($result){ echo "<script>alert('Insert Success')</script>"; }}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>无标题文档</title></head><body><hr>多级关联菜单:<form name="form1" method="post" action=""><select id="s1" name="s111" onChange="change(0,1)"></select> <select id="s2" name="s211" onChange="change(0,2)"></select> <select id="s3" name="s311" onChange="change(0,3)"></select> <select id="s4" name="s411"></select><input name="temp" type="hidden" id="temp"> <br> Menu Step <input name="menustep" type="text" id="menustep"> <br> Menu Name <input name="menuname" type="text" id="menuname" maxlength="255"> <input type="submit" name="Submit" value="提交"></form><script language="JavaScript" src="xselect.js"></script><?php $query = "select * from catalogs order by menuid,menustep";$result = mysql_query($query) or die(mysql_error());$script = '<SCRIPT LANGUAGE = JavaScript><!--//** Power by Fason(2004-3-11)//** Email:[email protected] dsy = new Dsy();';$members = array();while($re = mysql_fetch_array($result)){ $members[$re["menustep"]][] = array($re["menuname"],$re["menuid"]);}//print_r($members);foreach($members as $key => $val){ $arr .= 'dsy.add("'.$key.'",['; $value = ""; foreach($val as $k => $v){ if($value != "") $value .= ","; $value .= '["'.$v[0].'","'.$v[1].'"]'; } $arr .= $value."]);\n";}$script .= $arr;$script .= 'var s=["s1","s2","s3","s4"];setup(dsy,s);//--></SCRIPT>';echo $script;mysql_free_result($result);?><script>window.onload=function() { var val = Array("1","3","6","9"); for(var i = 1; i <= val.length; i++){ var s = "s" + i; var d = eval("document.all."+s); d.value = val[i-1]; if(i != val.length) d.onchange(); }}</script></body></html>xselect.js============//**Power By Fason//**Email : [email protected]function Dsy(){ this.Items = {};}Dsy.prototype.add = function(id,iArray){ this.Items[id] = iArray;}Dsy.prototype.Exists = function(id){ if(typeof(this.Items[id]) == "undefined") return false; return true;}function change(c,v){ var str="0"; var dsy = window.select[c].dsy; var s = window.select[c].Sel; for(i=0;i<v;i++){ str+=("_"+document.getElementById(s[i]).selectedIndex);}; //alert(str); document.all.temp.value += str+"|"; var ss=document.getElementById(s[v]); with(ss){ length = 0; if(dsy.Exists(str)){ var ar = dsy.Items[str]; for(i=0;i<ar.length;i++) { var ot = ar[i][0];var ov = ar[i][1] ? ar[i][1] : ot; options[length]=new Option(ot,ov); } options[length]=new Option("",""); options[length-1].selected = true; } else { options[0]=new Option("","");} if(++v<s.length){change(c,v);} else { document.all.menustep.value = document.all.temp.value.split("|")[0]; document.all.temp.value = ""; } } }function setup(iDsy,iS){ if(!window.select) { window.select = new Array();}; var counter = window.select.length; window.select[counter] = { dsy: iDsy, Sel: iS }; //for(i=0;i<iS.length-1;i++) //document.getElementById(iS[i]).onchange=new Function("change("+counter+","+(i+1)+")"); //change(counter,(i+1)); change(counter,0);} 这个更多的是 Browser 端的问题可以看看 javascript 版用php嘛那你每换一级都得再刷新一下数据 php登录思路问题 关于自动提交表单的几个问题,大大们帮忙看看 一个PHP环境安装过程中的遇到的问题,请大家帮忙解释一下 webservice的简单例子 帮忙看一下 关于数组中根据时间戳的日分组 如何解密PHP源代码? 关于session问题求助 IT农庄-技术交流群 12709379 ,UP有分 如何列出所有Request.QueryString的名字 在php中,如何像asp一样打开一个新页面? 新建的PHP+MYSQL+IIS,请问怎么连到MYSQL Session问题
有些BBS上那些无级分类帖子,有谁会耐着性子看的?
/*
# --------------------------------------------------------#
# Table structure for table `catalogs`
#CREATE TABLE `catalogs` (
`menuid` int(11) NOT NULL auto_increment,
`menustep` varchar(255) NOT NULL default '',
`menuname` varchar(255) NOT NULL default '',
KEY `menuid` (`menuid`)
) TYPE=MyISAM AUTO_INCREMENT=103 ;
*/
include("conn.php");$query = "select * from catalogs order by menuid,menustep";
$result = mysql_query($query) or die(mysql_error());
$script = '
<SCRIPT LANGUAGE = JavaScript>
<!--
//** Power by Fason(2004-3-11)
//** Email:[email protected] dsy = new Dsy();
';$members = array();
while($re = mysql_fetch_array($result)){
$members[$re["menustep"]][] = array($re["menuname"],$re["menuid"]);
}
//print_r($members);
foreach($members as $key => $val){
$arr .= 'dsy.add("'.$key.'",[';
$value = "";
foreach($val as $k => $v){
if($value != "") $value .= ",";
$value .= '["'.$v[0].'","'.$v[1].'"]';
}
$arr .= $value."]);\n";
}
$script .= $arr;
$script .= '
var s=["s1","s2","s3","s4","s5"];
setup(dsy,s);
//-->
</SCRIPT>
';
你只要建立catalogs数据表就可以了。
<?php
/*
# --------------------------------------------------------#
# Table structure for table `catalogs`
#CREATE TABLE `catalogs` (
`menuid` int(11) NOT NULL auto_increment,
`menustep` varchar(255) NOT NULL default '',
`menuname` varchar(255) NOT NULL default '',
KEY `menuid` (`menuid`)
) TYPE=MyISAM AUTO_INCREMENT=103 ;
*/
include("conn.php");if($_POST["menuname"] != ""){
$query = "insert into catalogs(menustep,menuname)values('".$_POST["menustep"]."','".$_POST["menuname"]."');";
$result = mysql_query($query);
if($result){
echo "<script>alert('Insert Success')</script>";
}
}?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head><body>
<hr>
多级关联菜单:
<form name="form1" method="post" action="">
<select id="s1" name="s111" onChange="change(0,1)"></select>
<select id="s2" name="s211" onChange="change(0,2)"></select>
<select id="s3" name="s311" onChange="change(0,3)"></select>
<select id="s4" name="s411"></select>
<input name="temp" type="hidden" id="temp">
<br>
Menu Step
<input name="menustep" type="text" id="menustep">
<br>
Menu Name
<input name="menuname" type="text" id="menuname" maxlength="255">
<input type="submit" name="Submit" value="提交">
</form>
<script language="JavaScript" src="xselect.js"></script>
<?php
$query = "select * from catalogs order by menuid,menustep";
$result = mysql_query($query) or die(mysql_error());
$script = '
<SCRIPT LANGUAGE = JavaScript>
<!--
//** Power by Fason(2004-3-11)
//** Email:[email protected] dsy = new Dsy();
';$members = array();
while($re = mysql_fetch_array($result)){
$members[$re["menustep"]][] = array($re["menuname"],$re["menuid"]);
}
//print_r($members);
foreach($members as $key => $val){
$arr .= 'dsy.add("'.$key.'",[';
$value = "";
foreach($val as $k => $v){
if($value != "") $value .= ",";
$value .= '["'.$v[0].'","'.$v[1].'"]';
}
$arr .= $value."]);\n";
}
$script .= $arr;
$script .= '
var s=["s1","s2","s3","s4"];
setup(dsy,s);
//-->
</SCRIPT>
';
echo $script;
mysql_free_result($result);
?>
<script>
window.onload=function() {
var val = Array("1","3","6","9");
for(var i = 1; i <= val.length; i++){
var s = "s" + i;
var d = eval("document.all."+s);
d.value = val[i-1];
if(i != val.length) d.onchange();
}
}
</script>
</body>
</html>xselect.js
============
//**Power By Fason
//**Email : [email protected]
function Dsy()
{
this.Items = {};
}
Dsy.prototype.add = function(id,iArray)
{
this.Items[id] = iArray;
}
Dsy.prototype.Exists = function(id)
{
if(typeof(this.Items[id]) == "undefined") return false;
return true;
}function change(c,v){
var str="0";
var dsy = window.select[c].dsy;
var s = window.select[c].Sel;
for(i=0;i<v;i++){ str+=("_"+document.getElementById(s[i]).selectedIndex);};
//alert(str);
document.all.temp.value += str+"|";
var ss=document.getElementById(s[v]);
with(ss){
length = 0;
if(dsy.Exists(str)){
var ar = dsy.Items[str];
for(i=0;i<ar.length;i++) {
var ot = ar[i][0];var ov = ar[i][1] ? ar[i][1] : ot;
options[length]=new Option(ot,ov);
}
options[length]=new Option("","");
options[length-1].selected = true;
}
else { options[0]=new Option("","");}
if(++v<s.length){change(c,v);}
else {
document.all.menustep.value = document.all.temp.value.split("|")[0];
document.all.temp.value = "";
}
}
}function setup(iDsy,iS)
{
if(!window.select)
{ window.select = new Array();};
var counter = window.select.length;
window.select[counter] = { dsy: iDsy, Sel: iS };
//for(i=0;i<iS.length-1;i++)
//document.getElementById(iS[i]).onchange=new Function("change("+counter+","+(i+1)+")");
//change(counter,(i+1));
change(counter,0);
}
这个更多的是 Browser 端的问题
可以看看 javascript 版用php嘛
那你每换一级都得再刷新一下数据