zoukankan      html  css  js  c++  java
  • php三级联动菜单

    之前有发过PHP二级菜单
    http://www.corange.cn/archives/2008/12/2857.html
    和ASP三级联动菜单
    http://www.corange.cn/archives/2006/08/15.html
    这几天用到了三级联动,将asp的版本改为PHP的了
    特地发出来,经过corange.cn测试过了。
    数据库结构
    -- 表的结构 `bigclass`
    --

    CREATE TABLE `bigclass` (
    `bigclassid` int(11) NOT NULL auto_increment,
    `bigclassname` varchar(200) collate utf8_unicode_ci NOT NULL,
    `sort` int(11) NOT NULL,
    `suoshu` int(1) NOT NULL,
    PRIMARY KEY (`bigclassid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=19 ;
    -- 表的结构 `smallclass`
    --

    CREATE TABLE `smallclass` (
    `smallclassid` int(11) NOT NULL auto_increment,
    `smallclassname` varchar(200) collate utf8_unicode_ci NOT NULL,
    `bigclassid` int(11) NOT NULL,
    `sort` int(11) NOT NULL,
    PRIMARY KEY (`smallclassid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=7 ;
    -- 表的结构 `minclass`
    --

    CREATE TABLE `minclass` (
    `minclassid` int(10) NOT NULL auto_increment,
    `minclassname` varchar(200) NOT NULL,
    `bigclassid` int(10) NOT NULL,
    `smallclassid` int(10) NOT NULL,
    `sort` int(10) NOT NULL,
    PRIMARY KEY (`minclassid`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
    代码如下
    <script language = "JavaScript">
    var onecount;
    onecount=0;
    subcat = new Array();
    <?
    //类别选择
    mysql_select_db($database_lr, $lr);
    $sql = "select * from smallclass order by sort";
    $result = mysql_query( $sql );
    $count = 0;
    while($res = mysql_fetch_row($result)){
    ?>
    subcat[<?=$count?>] = new Array("<?=$res[1]?>","<?=$res[4]?>","<?=$res[0]?>");
    <?
    $count++;
    }
    ?>
    onecount=<?php echo $count?>

    //联动函数
    function changelocation(bigclassid)
    {
    document.myform.smallclassid.length = 0;

    var bigclassid=bigclassid;
    var i;
    document.myform.smallclassid.options[0] = new Option('请选择二级分类','');
    for (i=0;i < onecount; i++)
    {
    if (subcat[i][1] == bigclassid)
    {
    document.myform.smallclassid.options[document.myform.smallclassid.length] = new Option(subcat[i][0], subcat[i][2]);
    }
    }

    }
    </script>
    <?php
    mysql_select_db($database_lr, $lr);
    $sql2 = "select * from minclass order by sort";
    $result2 = mysql_query( $sql2 );
    $count2 = 0;
    ?>
    <script language = "JavaScript">
    //如果这个数组中含有双引号则不能使用。即二级和三级类不能含有双引号
    var onecount2;
    onecount2=0;
    subcat2 = new Array();
    <?php
    $count2 = 0;
    while($res2 = mysql_fetch_row($result2)){
    ?>
    subcat2[<?php echo $count2?>] = new Array("<?php echo $res2[1]?>","<?php echo $res2[3]?>","<?php echo $res2[0]?>");
    <?php
    $count2++;
    }
    ?>
    onecount2=<?php echo $count2?>;

    function changelocation2(smallclassid)
    {
    document.myform.minclassid.length = 0;

    var smallclassid=smallclassid;
    var j;
    document.myform.minclassid.options[0] = new Option('请选择三级分类','');
    for (j=0;j < onecount2; j++)
    {
    if (subcat2[j][1] == smallclassid)
    {
    document.myform.minclassid.options[document.myform.minclassid.length] = new Option(subcat2[j][0], subcat2[j][2]);
    }
    }

    }
    </script>
    <select name="bigclassid" onChange="changelocation(document.myform.bigclassid.options[document.myform.bigclassid.selectedIndex].value)" size="1">
    <option selected value="">请指定一级分类</option>

    <?
    $sql = "select * from bigclass order by sort";
    $result = mysql_query( $sql );
    while($res = mysql_fetch_row($result)){
    ?>
    <option value="<? echo $res[0]; ?>"><? echo $res[1]?></option>
    <? } ?>

    </select>

    <select name="smallclassid" onChange="changelocation2(document.myform.smallclassid.options[document.myform.smallclassid.selectedIndex].value)" size="1">
    <option selected value="">请指定二级分类</option>
    </select>
    <select name="minclassid" size="1">
    <option selected value="">==所有三级分类==</option>
    </select>
    转载请保留版权,本文首发于corange.cn
    http://www.corange.cn/archives/2009/07/3294.html
  • 相关阅读:
    Balance的数学思想构造辅助函数
    1663. Smallest String With A Given Numeric Value (M)
    1680. Concatenation of Consecutive Binary Numbers (M)
    1631. Path With Minimum Effort (M)
    1437. Check If All 1's Are at Least Length K Places Away (E)
    1329. Sort the Matrix Diagonally (M)
    1657. Determine if Two Strings Are Close (M)
    1673. Find the Most Competitive Subsequence (M)
    1641. Count Sorted Vowel Strings (M)
    1679. Max Number of K-Sum Pairs (M)
  • 原文地址:https://www.cnblogs.com/zerogo/p/1520208.html
Copyright © 2011-2022 走看看