环境: PHP5&MySQL5
数据库结构信息 SID: 标识 Name: 分类名称 Status: 分类所属ID (如果是一级分类Status =0; 如果是二级分类Status = SID;)
要实现的功能: 如果选择一级分类的中某一个分类,在右边就要显示对应刚才选择的分类二级分类
实现理论: 1 先由PHP读取出一级分类和二级分类的所有信息分别存入两个数组 2 然后自接从PHP列出一级菜单并创建Select的onChange动作 3 从PHP传递二级菜单的数组到JavaScript,并创建onChange动作的函数
<?php //读出主分类信息归入$groupselect变量中 $groupselect = "<select name=\"stap\" onChange=\"ShowParent(this.value)\">\n<option value=\"0\" selected=\"selected\"> - $lang[add_staple_select] - </option>\n"; $query = mysql_query("SELECT SID, Name, Status from {$tablepre}staple ORDER BY SID"); while ($stap = mysql_fetch_array($query)) { if($stap['Status']==0) { //判断是否为主分类 $groupselect .= "<option value=\"$stap[SID]\">$stap[Name]</option>\n"; } else { $staple_menu_second[] = $stap; } } $groupselect .= '</select>';
//二级菜单默认选项 $second_select = "<option value=\"0\" selected=\"selected\"> - 无 - </option>"; ?> <script language="JavaScript"> var staple_sub = new Array(); <?php for($i=0;$i<count($staple_menu_second);$i++){ echo "staple_sub[".$i."] = new Array( '".$staple_menu_second[$i][SID]."', '".$staple_menu_second[$i][Name]."', '".$staple_menu_second[$i][Status]."' );"; } ?> function ShowParent(selectValue) { //初始化二级菜单 document.article.second.length = 0; for (i=0;i<staple_sub.length ;i++ ) { //判断staple_sub数组中Status字段中的值是否等于选择的值 if (staple_sub[i][2] == selectValue) { document.article.second.options[document.article.second.length] = new Option(staple_sub[i][1], staple_sub[i][0]); } } //如果一级分类选择的分类没有二级分类则显示"无"; if (article.second.length == 0) document.article.second.options[0] = new Option('- 无 -',0); } </script> ?>
html中直接打出$groupselect就为主分类 二级分类为<select name="second">$second_select</select> 缺点:无法自动刷新 (请老大帮完善一下阿)
|