http://community.csdn.net/Expert/topic/3760/3760599.xml?temp=.9609339这是我用的!一直没有问题,直到前天在别人的机子上有点问题,而且可能是其它原因引起的!但愿能帮上忙

解决方案 »

  1.   

    <script language = "JavaScript">
    var onecount;
    onecount=0;
    subcat = new Array();<?
    mysql_connect("localhost","root","125408");
    mysql_select_db( "test" );
    $sql = "select * from menu where parent_id != 0";
    $result = mysql_query( $sql );
    $count = 0;
    while($res = mysql_fetch_row($result)){
    ?>
    subcat[<? echo $count; ?>] = new Array("<? echo $res[2]; ?>","<? echo $res[1]; ?>","<? echo $res[0]; ?>");
    <?
    $count++;
    }
    echo "onecount=$count";
    ?>function changelocation(locationid)
        {
        document.myform.ctype.length = 0;     var locationid=locationid;
        var i;
        for (i=0;i < onecount; i++)
            {
                if (subcat[i][1] == locationid)
                { 
                    document.myform.ctype.options[document.myform.ctype.length] = new Option(subcat[i][0], subcat[i][2]);
                }        
            }
            
        }    
    </script><form method="post" name="myform" action="ru_query.php">
    <select name="type" onChange="changelocation(document.myform.type.options[document.myform.type.selectedIndex].value)" size="1">
    <option selected value="">请指定主分类</option>
            
     <?
       $sql = "select * from menu where parent_id = 0";
       $result = mysql_query( $sql );
       while($res = mysql_fetch_row($result)){
     ?>

        <option value="<? echo $res[0]; ?>"><? echo $res[2]; ?></option>
      <? } ?>
            
           </select> 
        
        <select name="ctype">                  
            <option selected value="">请指定小分类</option>
        </select>
    <input type="submit" name="Submit" value="搜索">
    </form>
    #
    # 表的结构 `blog_type`
    #CREATE TABLE `blog_type` (
      `id` tinyint(4) NOT NULL auto_increment,
      `parent_id` tinyint(4) NOT NULL default '0',
      `name` varchar(20) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;#
    # 导出表中的数据 `blog_type`
    #INSERT INTO `blog_type` VALUES (1, 0, '人事管理');
    INSERT INTO `blog_type` VALUES (2, 0, '通讯交流');
    INSERT INTO `blog_type` VALUES (3, 1, '档案管理');
    INSERT INTO `blog_type` VALUES (4, 1, '考勤管理');
    INSERT INTO `blog_type` VALUES (5, 2, '通讯录');
    INSERT INTO `blog_type` VALUES (6, 2, '网络会议');
    INSERT INTO `blog_type` VALUES (7, 3, '新增档案');
    INSERT INTO `blog_type` VALUES (8, 3, '查询档案');
    INSERT INTO `blog_type` VALUES (9, 3, '删除档案');
    INSERT INTO `blog_type` VALUES (10, 5, '新增通讯记录');
    INSERT INTO `blog_type` VALUES (11, 7, '档案新增');
    INSERT INTO `blog_type` VALUES (12, 0, '111111');
    INSERT INTO `blog_type` VALUES (13, 12, '0000000');
      

  2.   

    2级数据库类型的联动菜单<?php 
    处是连接数据库的代码$query1=mysql_query("select * from country where language_kind = '0' order by id 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 country where language_kind = '0' order by id asc"); 
    while($data1=mysql_fetch_array($query1)){ 
    $province_id1=$data1[id]; $query2=mysql_query("select * from province where province_id='$province_id1' order by province_id desc"); 
    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 country where language_kind = '0' order by id asc"); 
    while($data1=mysql_fetch_array($query1)){ 
    $province_id=$data1[id]; $query2=mysql_query("select * from province where province_id='$province_id' order by province_id 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='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为大类中文名称 
    ----------------------------------------------------------- */ 
    ?>
      

  3.   

    一个用xmlhttp的无刷新联动:
    select.htm
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <script language="JavaScript">
    function GetResult(str)
    {
        var oBao = new ActiveXObject("Microsoft.XMLHTTP");
        oBao.open("POST","select.php?sel="+str,false);
        oBao.send();
        //服务器端处理返回的是经过escape编码的字符串.
        //通过XMLHTTP返回数据,开始构建Select.
        BuildSel(unescape(oBao.responseText),document.all.sel2);
    }function BuildSel(str,sel)
    {
        //先清空原来的数据.
        sel.options.length=0;
        var arrstr = new Array();
        arrstr = str.split(",");
        //开始构建新的Select.
        for(var i=0;i<arrstr.length;i++)
        {
            sel.options[sel.options.length]=new Option(arrstr[i],arrstr[i])
        }
    }
    </script>
    <select name="sel" onChange="GetResult(this.value)">
    <option value="">请选择
    <option value="福建省">福建省
    <option value="湖北省">湖北省
    <option value="辽宁省">辽宁省
    <select>
    <select name="sel2"></select>
    </html>
    select.php
    <?php
    /*
    function uniDecode($str,$charcode){
    $text = preg_replace_callback("/%u[0-9A-Za-z]{4}/",toUtf8,$str);
    return mb_convert_encoding($text, $charcode, 'utf-8');
    }
    function toUtf8($ar){
    foreach($ar as $val){
    $val = intval(substr($val,2),16);
    if($val < 0x7F){ // 0000-007F
    $c .= chr($val);
    }elseif($val < 0x800) { // 0080-0800
    $c .= chr(0xC0 | ($val / 64));
    $c .= chr(0x80 | ($val % 64));
    }else{ // 0800-FFFF
    $c .= chr(0xE0 | (($val / 64) / 64));
    $c .= chr(0x80 | (($val / 64) % 64));
    $c .= chr(0x80 | ($val % 64));
    }
    }
    return $c;
    }
    */
    header("Content-type: text/html;charset=GB2312");
    include("../inc/PEAR_inc.php");
    $province=$_GET['sel'];
    $sql="SELECT city from china WHERE province='$province'";
    $result = $db->query($sql);
    if (DB::isError($result)) {
    die ($result->getMessage()); 
    }
    $num=$result->numRows();
    while($row=$result->fetchRow()){
    $i++;
    if($i!=$num){
    $sCity.=$row['city'].",";
    }else{
    $sCity.=$row['city'];
    }
    }
    echo $sCity;
    ?>
      

  4.   

    数据库
    # phpMyAdmin SQL Dump
    # version 2.5.5
    # http://www.phpmyadmin.net
    #
    # 主机: localhost
    # 生成日期: 2005 年 02 月 02 日 10:07
    # 服务器版本: 4.0.17
    # PHP 版本: 4.3.4

    # 数据库 : `city`
    # # --------------------------------------------------------#
    # 表的结构 `china`
    #CREATE TABLE `china` (
      `id` int(50) NOT NULL auto_increment,
      `province` varchar(100) NOT NULL default '',
      `city` varchar(100) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=10 ;#
    # 导出表中的数据 `china`
    #INSERT INTO `china` VALUES (1, '福建省', '福州市');
    INSERT INTO `china` VALUES (2, '福建省', '厦门市');
    INSERT INTO `china` VALUES (3, '福建省', '泉州市');
    INSERT INTO `china` VALUES (4, '湖北省', '武汉市');
    INSERT INTO `china` VALUES (5, '湖北省', '荆州市');
    INSERT INTO `china` VALUES (6, '湖北省', '宜昌市');
    INSERT INTO `china` VALUES (7, '辽宁省', '沈阳市');
    INSERT INTO `china` VALUES (8, '辽宁省', '大连市');
    INSERT INTO `china` VALUES (9, '辽宁省', '丹东市');
      

  5.   

    我的程序打开数据库是用pear的DB写的,你看着改一下吧