问题背景:一条访问控制策略包含多条规则信息,将策略信息以列表形式显示,每行显示一条策略信息。要求鼠标点击策略信息行,显示或隐藏该策略包含的所有规则信息。
主要代码:
$sql="select * from policyinfo limit $fromPage $pageSize";
$query=mysql_query($sql); //策略信息分页显示
while($re=mysql_fetch_array($query)){
?> //控制每行显示一条策略信息
<tr οnclick="fade('<?php echo "childtable".$re[Id];?>');">
<td><?php echo $re['PolicyVersion'];?> //输出策略信息
</td>
</tr>
//表格嵌套,显示策略中规则信息
<tr id="<?php echo "childtable".$re[0];?>" style="display:none">
<td colspan="6">
<table>
<?php
$sql1="select * from rprelation where PolicyId='$re[Id]'"; //关系表中与当前预览策略的规则信息
$query1=mysql_query($sql1);
while($row1=mysql_fetch_array($query1))
{ //循环显示多条规则信息
$sql2="select * from rule where Id='$row1[RuleId]'";
$query2=mysql_query($sql2);
$row2=mysql_fetch_array($query2);
//规则信息?>
<tr>
<td><?php echo $row2['AccessType']?>
</td>
</tr>
<?php
}
?>
</table></td>
</tr>
<?php
}
?>
<script>//实现隐藏js脚本
function fade(id){
var oa = document.getElementById(id);
if(oa.style.display == "none")
oa.style.display = "";
else
oa.style.display = "none";
}
</script>
注意点:表格的嵌套必须在<td></td>中,html元素的id必须唯一,id必须作为参数传给函数。