打印

[php] 如何实现PHP联动效果?

我有个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>

谢谢了。。。。。。。。
爱思数码科技诚聘电脑配件销售合作伙伴!欢迎加入爱思数码科技合作伙伴的行列(http://www.ashuma.com)