急用php二级连动菜单,请高手指点 http://community.csdn.net/Expert/topic/3760/3760599.xml?temp=.9609339这是我用的!一直没有问题,直到前天在别人的机子上有点问题,而且可能是其它原因引起的!但愿能帮上忙 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <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级数据库类型的联动菜单<?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为大类中文名称 ----------------------------------------------------------- */ ?> 一个用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;?> 数据库# 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, '辽宁省', '丹东市'); 我的程序打开数据库是用pear的DB写的,你看着改一下吧 百度百科的关键词链接是怎样实现的呢 用CI+SMARTY时include_php报错 php网站数据库服务器CPU被占满了 php 一个简单的函数调用问题 在编写导文件入数据库中遇到一个问题,请高手来帮忙. <><><><><>PHP的菜问题,分数不多,因为肯定很菜<><><><><> 服务器上的路径 关于在php中传递参数的问题,在线 我写了一段php方法 代码 为什么 执行效率如此低下 我用table-layout: fixed;代码防止撑坏表格,在mozilla中表格是没有被撑开,可是表格中的代码却跑到表格外面显示了 有谁知道如何解决MYSQL受限于操作系统2G文件大小的限制问题?
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');
处是连接数据库的代码$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为大类中文名称
----------------------------------------------------------- */
?>
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;
?>
# 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, '辽宁省', '丹东市');