求一个读数据库的二级联动菜单 读数据库还有困难吗,不就select一下? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 onclick事件中用getElementById获得其值 <script LANGUAGE="javascript"><!--var subval = new Array();<?php$small_sql_lb = "SELECT * FROM prod_small_class";$small_res_lb = db_query($small_sql_lb);$small_num1_lb = db_num_rows($small_res_lb);for ($i=0;$i<$small_num1_lb;$i++){ $small_row_lb = db_fetch_array($small_res_lb);?>subval[<?php echo $i?>] = new Array('<?php echo $small_row_lb['big_class']?>','<?php echo $small_row_lb['small_class_id']?>','<?php echo $small_row_lb['small_class_name']?>')<?php $small_num2_lb--;}?>function changeselect1(locationid){ document.form1.s2.length = 0; document.form1.s2.options[0] = new Option('==請選擇小類==',''); for (i=0; i<subval.length; i++) { if (subval[i][0] == locationid) {document.form1.s2.options[document.form1.s2.length] = new Option(subval[i][2],subval[i][1]);} }}//--></script><form action="" method="post" name="form1"><select name="s1" onChange="changeselect1(this.value)"><option>請選擇大類</option><?php$sql_lb = "SELECT * FROM prod_class";$res_lb = db_query($sql_lb);$num1_lb = db_num_rows($res_lb);$num2_lb = $num1_lb;while ($num2_lb > 0){ $row_lb = db_fetch_array($res_lb);?> <option value="<?php echo $row_lb['prod_class_id']?>"><?php echo $row_lb['prod_class_name']?></option><?php $num2_lb--;}?></select><select name="s2" onChange="changeselect2(this.value)"> <option>請選擇小類</option></select></form> 數據庫CREATE TABLE `prod_class` ( `prod_class_id` int(11) NOT NULL auto_increment, `prod_class_name` varchar(255) NOT NULL default '', `prod_class_num` int(11) NOT NULL default '0', PRIMARY KEY (`prod_class_id`), KEY `prod_class_id` (`prod_class_id`)) TYPE=MyISAM AUTO_INCREMENT=28 ;CREATE TABLE `prod_small_class` ( `small_class_id` int(11) NOT NULL auto_increment, `big_class` int(11) NOT NULL default '0', `small_class_name` varchar(255) NOT NULL default '', `small_class_contuct` longtext NOT NULL, `small_class_num` int(11) NOT NULL default '0', PRIMARY KEY (`small_class_id`)) TYPE=MyISAM AUTO_INCREMENT=4 ; <?phpfunction btype(){global $db;$btype_query = $db->exec("select id,bname from news_bclass order by id desc") or die('查询失败');$i=0;while($btplist = $db->fetch($btype_query)){$btype_list.="<option value='".$btplist['id']."'>".$btplist['btype']."</option>";}return $btype_list;}$stype_query = $db->exec("select id,sname,parentid from stype") or die('查询失败');$j=0;while($stplist = $db->fetch($stype_query)){//$stype_list="<option value='".$stplist['id']."'>".$stplist['type']."</option>";$stype_list.='Citys['.$j.'] =new Array("'.$stplist['btypeid'].'","'.$stplist['sid'].'","'.$stplist['stype'].'");';$j=$j+1;}?><script language ="javascript" >Citys = new Array();<? echo $stype_list;?>function changeselect(selvalue){ var selvalue = selvalue; var i; document.form1.s_class.length = 0 ; document.form1.s_class.options[document.form1.s_class.length] = new Option("请选择",""); for (i = 0 ;i <Citys.length;i++) { if(Citys[i][0]==selvalue){ document.form1.s_class.options[document.form1.s_class.length] = new Option(Citys[i][2],Citys[i][1]); } }}document.form1.s_class.options[document.form1.s_class.length] = new Option("请选择","");</script><DIV> <select size="1" name="b_class" onchange ="changeselect(document.form1.b_class.options[document.form1.b_class.selectedIndex].value)"> <option value=''>选择大类</option> <? echo btype();?></select> <select size="1" name="s_class"></select> <DIV> subval[<?php echo $i?>] = new Array('大類ID','小類ID','小類文字')$_POST['s1'];大類$_POST['s1'];小類取的是ID值 subval[<?php echo $i?>] = new Array('大類ID','小類ID','小類文字')$_POST['s1'];大類$_POST['s2'];小類取的是ID值 <?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为大类中文名称 */ ?> 续问:求教mysql批量更新问题 这种码如何转换回来? PHP插入SQL中文乱码! 求php java 的稳定方法.谢 fopen的奇怪问题 关于web服务器最大连接数 cookies问题 mysql操作一个50MB的表,会不会太难? 关于cookie的问题,急!! 在线等待 重金求教!!! 分页提交的问题 asp程序员如何开始学习php?
<!--
var subval = new Array();
<?php
$small_sql_lb = "SELECT * FROM prod_small_class";
$small_res_lb = db_query($small_sql_lb);
$small_num1_lb = db_num_rows($small_res_lb);
for ($i=0;$i<$small_num1_lb;$i++){
$small_row_lb = db_fetch_array($small_res_lb);
?>
subval[<?php echo $i?>] = new Array('<?php echo $small_row_lb['big_class']?>','<?php echo $small_row_lb['small_class_id']?>','<?php echo $small_row_lb['small_class_name']?>')
<?php
$small_num2_lb--;
}
?>
function changeselect1(locationid)
{
document.form1.s2.length = 0;
document.form1.s2.options[0] = new Option('==請選擇小類==','');
for (i=0; i<subval.length; i++)
{
if (subval[i][0] == locationid)
{document.form1.s2.options[document.form1.s2.length] = new Option(subval[i][2],subval[i][1]);}
}
}//-->
</script><form action="" method="post" name="form1">
<select name="s1" onChange="changeselect1(this.value)">
<option>請選擇大類</option>
<?php
$sql_lb = "SELECT * FROM prod_class";
$res_lb = db_query($sql_lb);
$num1_lb = db_num_rows($res_lb);
$num2_lb = $num1_lb;
while ($num2_lb > 0){
$row_lb = db_fetch_array($res_lb);
?>
<option value="<?php echo $row_lb['prod_class_id']?>"><?php echo $row_lb['prod_class_name']?></option>
<?php
$num2_lb--;
}
?>
</select>
<select name="s2" onChange="changeselect2(this.value)">
<option>請選擇小類</option>
</select>
</form>
CREATE TABLE `prod_class` (
`prod_class_id` int(11) NOT NULL auto_increment,
`prod_class_name` varchar(255) NOT NULL default '',
`prod_class_num` int(11) NOT NULL default '0',
PRIMARY KEY (`prod_class_id`),
KEY `prod_class_id` (`prod_class_id`)
) TYPE=MyISAM AUTO_INCREMENT=28 ;
CREATE TABLE `prod_small_class` (
`small_class_id` int(11) NOT NULL auto_increment,
`big_class` int(11) NOT NULL default '0',
`small_class_name` varchar(255) NOT NULL default '',
`small_class_contuct` longtext NOT NULL,
`small_class_num` int(11) NOT NULL default '0',
PRIMARY KEY (`small_class_id`)
) TYPE=MyISAM AUTO_INCREMENT=4 ;
function btype()
{
global $db;
$btype_query = $db->exec("select id,bname from news_bclass order by id desc") or die('查询失败');
$i=0;
while($btplist = $db->fetch($btype_query))
{
$btype_list.="<option value='".$btplist['id']."'>".$btplist['btype']."</option>";
}
return $btype_list;
}
$stype_query = $db->exec("select id,sname,parentid from stype") or die('查询失败');
$j=0;
while($stplist = $db->fetch($stype_query))
{
//$stype_list="<option value='".$stplist['id']."'>".$stplist['type']."</option>";
$stype_list.='Citys['.$j.'] =new Array("'.$stplist['btypeid'].'","'.$stplist['sid'].'","'.$stplist['stype'].'");';
$j=$j+1;
}
?><script language ="javascript" >
Citys = new Array();
<? echo $stype_list;?>function changeselect(selvalue)
{
var selvalue = selvalue;
var i;
document.form1.s_class.length = 0 ;
document.form1.s_class.options[document.form1.s_class.length] = new Option("请选择","");
for (i = 0 ;i <Citys.length;i++)
{
if(Citys[i][0]==selvalue){
document.form1.s_class.options[document.form1.s_class.length] = new Option(Citys[i][2],Citys[i][1]);
}
}
}
document.form1.s_class.options[document.form1.s_class.length] = new Option("请选择","");
</script><DIV>
<select size="1" name="b_class" onchange ="changeselect(document.form1.b_class.options[document.form1.b_class.selectedIndex].value)">
<option value=''>选择大类</option>
<? echo btype();?></select>
<select size="1" name="s_class"></select> <DIV>
$_POST['s1'];大類
$_POST['s1'];小類取的是ID值
$_POST['s1'];大類
$_POST['s2'];小類取的是ID值
$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为大类中文名称
*/
?>