我有个MYSQL表:class,主要有三个字段:
classid, bclassid, classname, sonclass
classid:序号
bclassid:大类序号和小类序号
classname:大类名字和小类名字
sonclass:只有大类才有,里面是大类下属的小类序号。
我想实现二级联动的效果,在网上找了N多PHP方面的资料,因为不懂程序语言,所以现在把一个个人觉得可行的代码贴出来,请高手们给帮忙调试下。。。谢谢了。。。。
这个例子的作者说需要两个页面,我改了下名字:
2.php,3.php
2.php代码:
<?php require("2.php");?>
3.php页面代码:
<?php
mysql_connect("localhost","root","");
$query1=mysql_query("select * from phome_enewsclass where classid = '0' order by classid asc");
$fMenu="";
$fValue="";
while($data1=@mysql_fetch_array($query1)){
$fMenu.="\"".$data1[name]."\",";
$fValue.="\"".$data1[id]."\",";
}
$fMenu=substr($fMenu,0,(strlen($fMenu)-1));
$fMenu="[".$fMenu."]";//*****************************得到var fMenu
$fValue=substr($fValue,0,(strlen($fValue)-1));
$fValue="[".$fValue."]";//*****************************得到var fValue
//得到*****************************var sMenu
$query1=mysql_query("select * from class where classid = '0' order by classid asc"); //大类的SQL
while($data1=@mysql_fetch_array($query1)){
$province_id1=$data1[id];
$query2=mysql_query("select * from class where bclassid='$bclassid1' order by bclassid desc"); //小类SQL
while($data2=mysql_fetch_array($query2)){
$num=mysql_num_rows($query2);
$i++;
$sMenu.="\"".$data2[name]."\",";
if($i==$num){
$sMenu="[".$sMenu."],[";
$i=0;
}
}
}
$sMenu.="]";
$sMenu=str_replace("\",]","\"]",$sMenu);
$sMenu=str_replace(",[""]","]",$sMenu);
if((substr($sMenu,0,2))=="[\""){
$sMenu="[".$sMenu;
}else{
$sMenu=preg_replace("/\[{3,}/is","[[\\1",$sMenu);//匹配
}
//得到*****************************var sValue
$query1=mysql_query("select * from class where classid = '0' order by classid asc"); //大类
while($data1=@mysql_fetch_array($query1)){
$province_id=$data1[id];
$query2=mysql_query("select * from class where bclassid='$bclassid' order by bclassid asc"); //小类
while($data2=mysql_fetch_array($query2)){
$nums=mysql_num_rows($query2);
$j++;
$sValue.="\"".$data2[id]."\",";
if($j==$nums){
$sValue="[".$sValue."],[";
$j=0;
}
}
}
$sValue.="]";
$sValue=str_replace("\",]","\"]",$sValue);
$sValue=str_replace(",[]","]",$sValue);
if((substr($sValue,0,2))=="[\""){
$sValue="[".$sValue;
}else{
$sValue=preg_replace("/\[{3,}/is","[[\\1",$sValue);//匹配
}
?>
<div id="tar"> </div>
<SCRIPT LANGUAGE="JavaScript" DEFER>
var fMenu = <?php echo $fMenu; ?>;
var fValue = <?php echo $fValue; ?>;
var sMenu = <?php echo $sMenu; ?>;
var sValue = <?php echo $sValue; ?>;
var oWhere = document.all.tar;
var ofMenu = document.createElement(" <SELECT name='classname'>");
var osMenu = document.createElement(" <SELECT name='sonclass'>");
with(oWhere)appendChild(ofMenu),appendChild(osMenu);
createMainOptions();
createSubOptions(0);
ofMenu.onchange = function() {createSubOptions(this.selectedIndex);};
function createMainOptions() {
for(var i=0;i <fMenu.length;i++)ofMenu.options[i] = new Option(fMenu[i],fValue[i]);
}
function createSubOptions(j) {
with(osMenu) {
length=0;
for(var i=0;i <sMenu[j].length;i++)osMenu.options[i] = new Option(sMenu[j][i],sValue[j][i]);
}
}
</SCRIPT>
谢谢了。。。。。。。。