效果:
PS:没有什么技术含量,通过自学解决问题而已。
member/archives_sg_add.php添加调用:
require_once(dirname(__FILE__)."/GetArcTypeList.php");
member/templets/archives_sg_add.htm 在<label>隶属栏目:</label>添加代码:
<label>隶属栏目:</label>
<?php
$typeOpti*****1 = GetOptionListM1(0,$channelid);
echo "<select id='one' size='1'>\r\n";
echo "<option value='' selected>请选择栏目...</option>\r\n";
echo $typeOpti*****1;
echo "</select>";
?> //一级栏目
<span id="Second"></span> //二级栏目列表
<span id="Third"></span> //三级栏目列表
<span style="color:#F00">*</span>
JS代码:
<script language='javascript'>
function ShowArcType(UpperFloor,TheFloor,Id)
{
var xmlHttp
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request")
return
}
var url="GetArcTypeList.php";
url=url+"?TheFloor="+TheFloor+"&UpperFloor="+UpperFloor;
if (Id==2)
{
url=url+"&OpObj=Second&sid="+Math.random();
}
if (Id==3)
{
url=url+"&OpObj=Third&sid="+Math.random();
}
xmlHttp.onreadystatechange=function(){ stateChanged(xmlHttp,Id); };
xmlHttp.open("GET",url,true);
xmlHttp.send(null)
}
function stateChanged(obj,Id)
{
if (obj.readyState==4 || obj.readyState=="complete")
{
if (Id==2)
{
document.getElementById("Third").innerHTML=""
document.getElementById("Second").innerHTML=obj.resp*****eText
}
if (Id==3)
{
document.getElementById("Third").innerHTML=obj.resp*****eText
}
}
}
function GetXmlHttpObject()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
</script>
GetArcTypeList.php代码:
<?php
require_once(dirname(__FILE__)."/config.php");
require_once(DEDEINC."/dedetag.class.php");
require_once(DEDEINC."/userlogin.class.php");
require_once(DEDEINC."/customfields.func.php");
require_once(dirname(__FILE__)."/inc/inc_catalog_opti*****.php");
require_once(dirname(__FILE__)."/inc/inc_archives_functi*****.php");
if (!defined('DEDEMEMBER'))
{
exit("dedecms");
}
$OpObj=$_GET["OpObj"];
$TheFloor=$_GET["TheFloor"];
$UpperFloor=$_GET["UpperFloor"];
if ($OpObj=="Second")
{
global $OptionArrayListM2,$dsql;
$OptionArrayListM2 = "";
if ($TheFloor!="" and $UpperFloor!="")
{
$dsql->SetQuery("SELECT * FROM `dede_arctype` where topid=".$UpperFloor." and reid=".$TheFloor." order by sortrank asc");
$dsql->Execute();
$row = "";
if ($dsql->GetTotalRow()>0)
{
$OptionArrayListM2 .= "<select id='two' size='1' onchange='ShowArcType(".$TheFloor.",this.value,3)'>\r\n";
$OptionArrayListM2 .= "<option value='' selected>请选择...</option>\r\n";
while($row = $dsql->GetObject())
{
$OptionArrayListM2 .= "<option value='".$row->id."' class='option3'>".$row->typename."</option>\r\n";
}
$OptionArrayListM2 .= "</select>";
}
else
$OptionArrayListM2 = "";
}
else
$OptionArrayListM2 = "";
echo $OptionArrayListM2;
}
else if ($OpObj=="Third")
{
global $OptionArrayListM3,$dsql;
$OptionArrayListM3 = "";
if ($TheFloor!="" and $UpperFloor!="")
{
$dsql->SetQuery("SELECT * FROM `dede_arctype` where topid=".$UpperFloor." and reid=".$TheFloor." order by sortrank asc");
$dsql->Execute();
$row = "";
if ($dsql->GetTotalRow()>0)
{
$OptionArrayListM3 .= "<select id='three' size='1'>\r\n";
$OptionArrayListM3 .= "<option value='' selected>请选择...</option>\r\n";
while($row = $dsql->GetObject())
{
$OptionArrayListM3 .= "<option value='".$row->id."' class='option3'>".$row->typename."</option>\r\n";
}
$OptionArrayListM3 .= "</select>";
}
else
$OptionArrayListM3 = "";
}
else
$OptionArrayListM3 = "";
echo $OptionArrayListM3;
}
function GetOptionListM1($topid=0,$channeltype=0)//查询指定频道的一级栏目,根据GetOptionListM()仿写的。
{
global $OptionArrayListM1,$dsql;
$dsql->SetQuery("SELECT * FROM `dede_arctype` where topid=".$topid." and channeltype=".$channeltype."");
$dsql->Execute();
$OptionArrayListM1 = "";
$row="";
//$OptionArrayListM2 .= "<select size='1' onchange='ShowArcType(this.value,this.value,'Second')'>\r\n";
while($row = $dsql->GetObject())
{
$OptionArrayListM1 .= "<option value='".$row->id."' class='option3'{$selected}>".$row->typename."</option>\r\n";
}
//$OptionArrayListM2 .= "</select>";
return $OptionArrayListM1;
}
?>