一个php的二级联动,无刷新,从数据库中调入类别

类别:编程语言 点击:0 评论:0 推荐:

<?php
/*******************************************
**********功能:php二级联动菜单*************
**********作者:冲星*************************
**********Email:[email protected]**************
**********日期:2004/10/02******************
**********请转载时保留版权信息**************
*******************************************/

require_once('db.inc.php');//数据库连接
$db=new hq_online;
$db1=new hq_online;
$db->query("select * from news_bclass order by id desc");
$fMenu="";
$fValue="";
while($db->next_record()){
  $fMenu.="\"".$db->Record["bname"]."\",";
  $fValue.="\"".$db->Record["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
$db->query("select * from news_bclass order by id desc");
while($db->next_record()){
$parentid=$db->Record["id"];
  $db1->query("select * from news_sclass where parentid='$parentid' order by parentid desc");
  while($db1->next_record()){
  $num=$db1->num_rows();
  $i++;
  $sMenu.="\"".$db1->Record["sname"]."\",";
  if($i==$num){
  $sMenu="[".$sMenu."],[";
  }
  }
 // $sMenu1=$sMenu."],[";
}
$sMenu.="]";
$sMenu=str_replace("\",]","\"]",$sMenu);
$sMenu="[".$sMenu."]";

//得到*****************************var sValue
$db->query("select * from news_bclass order by id desc");
while($db->next_record()){
$parentid=$db->Record["id"];
  $db1->query("select * from news_sclass where parentid='$parentid' order by parentid desc");
  while($db1->next_record()){
  $nums=$db1->num_rows();
  $j++;
  $sValue.="\"".$db1->Record["id"]."\",";
  if($j==$nums){
  $sValue="[".$sValue."],[";
  }
  }
}
$sValue.="]";
$sValue=str_replace("\",]","\"]",$sValue);
$sValue="[".$sValue."]";
//echo $fMenu."<br>";
//echo $sMenu."<br>";
//echo $fValue."<br>";
//echo $sValue."<br>";exit;

?>
<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='bigclass'>");
var osMenu = document.createElement("<SELECT name='smallclass'>");
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>

<?php
/*
调用方法:
将此代码保存为文件ld2.php
例如要在write.php页面放一个二级联动,则在write.php页面
要放置二级联动的地方加一句require_once("ld2.php");
若write.php要向save.php页面提交数据则在save.php中使用
$bigclass=$_POST["bigclass"];//取得大类的id值
$smallclass=$_POST["smallclass"];//取得小类的id值
接下来就知道该怎么做了吧……
附表的结构:
 可能有的表的结构和我有些不同,但基本点都一样,修改程序
中对应字段和表名就ok
程序写的有点乱,不过绝对可以放心的使用
欢迎与我交流探讨!
---------------------------------------------------------
大类的表news_bclass结构

CREATE TABLE news_bclass (
  id int(11) NOT NULL auto_increment,
  bname varchar(10) NOT NULL default '',
  PRIMARY KEY  (id),
  UNIQUE KEY id_2 (id),
  KEY id (id)
) TYPE=MyISAM;

字段说明:bname为大类中文名称
------------------------------

小类的表news_sclass结构

CREATE TABLE news_sclass (
  id int(11) NOT NULL auto_increment,
  sname varchar(10) NOT NULL default '',
  parentid int(10) NOT NULL default '0',
  bname varchar(10) NOT NULL default '',
  PRIMARY KEY  (id),
  UNIQUE KEY id_2 (id),
  KEY id (id)
) TYPE=MyISAM;

字段说明:sname为小类中文名称
     parendid为大类中的id值
          bname为大类中文名称
-----------------------------------------------------------   


*/
?>

db.inc.php文件的内容
<?php
class hq_online extends db_sql{
var $Host="localhost";
var $Database="hq";
var $User="root";
var $password="";
}

本文地址:http://com.8s8s.com/it/it26950.htm