文章教程

11.4.1设计公告管理页面

9/17/2020 9:38:49 PM 人评论 次浏览

11.4 公告信息管理模块设计

公告信息管理模块可以实现以下功能。

• 在表格中浏览公告信息。

• 添加新的公告记录。

• 修改公告记录。

• 删除公告记录。

只有管理用户才有权限进入公告信息管理模块。

11.4.1 设计公告管理页面

公告管理页面为 BulletinList.php,在此页面中可以对网站的公告信息进行添加、修改、删除等操作,如图11-4所示。

下面将介绍BulletinList.php中与界面显示相关的部分代码。

1.显示公告信息

为了便于用户管理公告信息,BulletinList.php以表格的形式显示公告名称,并在后面显示修改链接和删除复选框。代码如下:

figure_0234_0310

图11-4 公告管理页面

<?PHP

include('..\Class\Bulletin.php');

//查询表Bulletin中的公告信息

$obj = new Bulletin();

$results = $obj->GetBulletinlist();

$exist = false;

?>

<p align=center><font style='FONT-SIZE:12pt' color="#000080"><b>公告管理</b></font></p>

<table  align=center  border="1"  cellspacing="0"  width="100%" bordercolorlight="#4DA6FF" bordercolordark="#ECF5FF" style='FONT-SIZE: 9pt'>

<tr>

<td width="50%" align="center" bgcolor="#eeeeee"><strong>题目</strong></td>

<td width="30%" align="center" bgcolor="#eeeeee"><strong>时间</strong></td>

<td width="10%" align="center" bgcolor="#eeeeee"><strong>修改</strong></td>

<td width="10%" align="center" bgcolor="#eeeeee"><strong>选择</strong></td>

</tr>

<?PHP

//依次显示公告信息

while($row = $results->fetch_row())

{

$exist = true;

?>

<tr>

<td><a href="../BulletinView.php?id=<?PHP echo($row[0]); ?>" onClick="return BulletinWin(this.href)"><?PHP echo($row[1]); ?></a></td>

<td align="center"><?PHP echo($row[3]); ?></td>

<td align="center"><a href="BulletinEdit.php?id=<?PHP echo($row[0]); ?>"onClick="return BulletinWin(this.href)">修改</a></td>

<td align="center"><input type="checkbox" name="Bulletin" id="<?PHP echo($row[0]); ?>" style="font-size: 9pt"></td>

</tr>

<?PHP

}

if (!$exist)

{

print "<tr><td colspan=5 align=center>目前还没有公告。</td></tr></table>";

}

?>

其中,“修改”超链接的定义代码如下:

<a   href="BulletinEdit.php?id=<%=obj.rs("Id")%>"   onClick="return BulletinWin(this.href)">修改</a>

可以看到,修改公告的页面是BulletinEdit.php,参数id的值为要修改的公告编号。

删除复选框的定义代码如下:

<input type="checkbox" name="Bulletin" id="<%=obj.rs("Id")%>" style="font-size: 9pt">

公告信息后面的复选框名为Bulletin,它的id值与对应公告信息的编号相同。

JavaScript函数BulletinWin()的功能是弹出窗口,显示公告信息。代码如下:

<script language="javascript">

function BulletinWin(url) {

var

oth="toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizab le=yes,left=200,top=200";

oth = oth+",width=400,height=300";

var BulletinWin = window.open(url,"BulletinWin",oth);

BulletinWin.focus();

return false;

}

2.显示功能按钮

如果存在公告记录,则在表格下面显示“添加公告”、“全选”、“清空”和“删除”按钮,代码如下:

<input type="button" value=" 添加公告 " onclick="BulletinWin('BulletinAdd.php)"name=add>

&nbsp;&nbsp;<input type="button" value="全选" onclick="sltAll()" name=button1>

&nbsp;&nbsp;<input type="button" value="清空" onclick="sltNull()" name=button2>

&nbsp;&nbsp;<input type="submit" value="删除" name="tijiao" onclick="SelectChk()">

这些按钮对应的代码将在后面结合具体功能介绍。

11.4.2 添加公告信息

在BulletinList页面中,单击“添加公告”按钮,将调用BulletinWin()函数,在新窗口中打开BulletinAdd.php,添加公告信息,如图11-5所示。

figure_0235_0311

图11-5 添加公告

定义表单myform的代码如下:

<form name="myform" method="POST" action="BulletinSave.php?action=add"

提交前需要对表单进行域校验,checkFields函数的功能就是这样的。代码如下:

<script language="javascript">

function checkFields()

{

if (myform.title.value=="") {

alert("公告题目不能为空");

myform.title.onfocus();

return false;

}

if (myform.content.value=="") {

alert("公告内容不能为空");

myform.content.onfocus();

return false;

}

return true;

}

</script>

它的主要功能是判断“公告标题”和“公告内容”是否为空,如果为空,则返回false,不允许表单数据提交。

表单数据提交后,将执行BulletinSave.php保存数据,参数action表示当前的动作,action=add表示添加记录。BulletinSave.php也可以用来处理修改公告信息的数据。

BulletinSave.php的主要代码如下:

<?PHP

include('..\Class\Users.php');

include('..\Class\Bulletin.php');

session_start();

//得到动作参数,如果为add则表示创建公告,如果为update则表示更改公告

$StrAction=$_GET["action"];

//读取当前用户信息

$objUser = new Users();

$objUser->GetUsersInfo($_SESSION["UserName"]);

//设置公告信息

$objBul = new Bulletin();

//取得公告题目和内容和提交人用户名

$objBul->Title=$_POST["title"];

$objBul->Content=$_POST["content"];

$objBul->Poster=$objUser->Name;

$objBul->PostTime=strftime("%Y-%m-%d %H:%M:%S");

if ($StrAction=="add")

{

//在数据库表Board中插入新公告信息

$objBul->insert();

}

else

{

//更改此公告信息

$id=$_GET["id"];

$objBul->update($id);

}

print "<h3>公告成功保存</h3>";

?>

</body>

<script language="javascript">

//刷新父级窗口,延迟此关闭

opener.location.reload();

setTimeout("window.close()",600);

</script>

11.4.3 修改公告信息

修改公告是单击每个公告的“修改”链接,将弹出新窗口,打开 BulletinEdit.php 页面。BulletinEdit.php 的功能是从数据库中取出指定公告的信息,用户可以对它们进行更改,然后提交数据。BulletinEdit.php中表单myform的定义代码如下:

<form name="myform" method="POST" action="BulletinSave.php?action=update&id=<%=id%>"OnSubmit="return checkFields()">

与添加公告相同的是,提交表单前同样需要进行域校验,由checkFields() 函数完成此功能。

在BulletinEdit.php中,参数id表示要修改的公告编号,action=update用于通知BulletinSave.php要执行更新数据的操作,BulletinSave.php可以处理添加数据和更新数据,而添加数据和更新数据对应的SQL语句不同。因此,提交数据时需要指定是添加数据还是更新数据。

从数据库中读取并显示公告信息的代码如下:

<?PHP

//从数据库中取得此公告信息

//读取参数id

$id=$_GET["id"];

//根据参数id读取指定的公告信息

include('..\Class\Bulletin.php');

$obj = new Bulletin();

$obj->GetBulletinInfo($id);

//如果记录集为空,则显示没有此公告

if($obj->Id==0)

{

exit("没有此公告");

}

else

{

//下面内容是在表格中显示公告内容

?>

<form name="myform" method="POST" action="BulletinSave.php?action=update&id=<? echo($id); ?>" OnSubmit="return checkFields()">

<table border="0" width="100%" cellspacing="1">

<tr>

<td width="100%" bgcolor="#FFFFFF"><span class="STYLE1">公告标题

<input  type="text"  name="title"  size="20"  value="<?echo($obj->Title); ?>">

</span></td>

</tr>

<tr>

<td width="100%" bgcolor="#FFFFFF"><span class="STYLE1"> 公告内容</span></td>

</tr>

<tr>

<td width="100%" bgcolor="#FFFFFF"><textarea rows="12" name="content"cols="55"><?PHP echo($obj->Content); ?></textarea></td>

</tr>

</table>

<p align="center"><input type="submit" value="提交" name="B1">

<input type="reset" value="重写" name="B2"></p>

<?

}

?>

表单数据提交后,将执行 BulletinSave.php 保存数据。BulletinSave.php 的内容请参见 11.4.2小节。

11.4.4 删除公告信息

在删除公告之前,需要选中相应的复选框。下面介绍几个与选择复选框相关的 JavaScript函数。

1.选择全部复选框

在BulletinList.php中,定义“全选”按钮的代码如下:

<input type="button" value="全选" onclick="sltAll()" name=button1>

当单击“全选”按钮时,将执行sltAll()函数,代码如下:

function sltAll()

{

var nn = self.document.all.item("Bulletin");

for(j=0;j<nn.length;j++) {

self.document.all.item("Bulletin",j).checked = true;

}

}

self对象指当前页面,self.document.all.item("Bulletin")返回当前页面中Bulletin复选框的数量。程序通过for循环语句将所有的Bulletin复选框值设置为true。

2.全部清除选择

在BulletinList.php中,定义“清空”按钮的代码如下:

<input type="button" value="清空" onclick="sltNull()" name=button2>

当单击“清空”按钮时,将执行sltNull()函数,代码如下:

function sltNull()

{

var nn = self.document.all.item("Bulletin");

for(j=0;j<nn.length;j++) {

self.document.all.item("Bulletin",j).checked = false;

}

}

3.生成并提交删除编号列表

在BulletinList.php中,定义“删除”按钮的代码如下:

<input type="submit" value="删除" name="tijiao" onclick="SelectChk()">

当单击“删除”按钮时,将执行SelectChk()函数,代码如下:

function SelectChk()

{

var s = false; //用来记录是否存在被选中的复选框

var Bulletinid, n=0;

var strid, strurl;

var nn = self.document.all.item("Bulletin"); //返回复选框Bulletin的数量

for (j=0; j<nn.length; j++) {

if (self.document.all.item("Bulletin",j).checked) {

n = n + 1;

s = true;

Bulletinid = self.document.all.item("Bulletin",j).id+""; //转换为字符串

//生成要删除公告编号的列表

if(n==1) {

strid = Bulletinid;

}

else {

strid = strid + "," + Bulletinid;

}

}

}

strurl = "BulletinDelt.php?id=" + strid;

if(!s) {

alert("请选择要删除的公告!");

return false;

}

if (confirm("你确定要删除这些公告吗?")) {

form1.action = strurl;

form1.submit();

}

}

程序对每个复选框进行判断,如果复选框被选中,则将复选框的id值转换为字符串,并追加到变量strid中。因为复选框的id值与对应的公告编号相同,所以最后strid中保存的是以逗号分隔的待删除的公告编号。

以strid的值为参数执行BulletinDelt.php,就可以删除选中的记录了。相关的代码如下:

<?PHP

//从数据库中批量删除公告信息

//读取要删除的公告编号

$id=$_GET["id"];

include('..\Class\Bulletin.php');

$obj = new Bulletin();

$obj->delete($id);

?>

删除后将提示成功删除信息。

11.4.5 查看公告信息

单击公告超级链接,将在新窗口中执行BulletinView.php,查看公告信息,如图11-6所示。

BulletinView.php保存在2shou目录下(因为普通用户也需要使用它浏览公告,所以没有保存在admin目录下),显示公告的代码如下:

<?PHP

include('Class\Bulletin.php');

//从数据库中取得此公告信息

//读取参数id

$id=$_GET["id"];

//根据参数id读取指定的公告信息

$obj = new Bulletin();

$results = $obj->GetBulletinInfo($id);

//如果记录集为空,则显示没有此公告

if($obj->Id==0)

{

exit("没有此公告");

}

else

{

//下面的代码用于显示公告内容

?>

figure_0240_0312

图11-6 查看公告信息

教程类别