1.浏览会议记录模块概述
浏览会议记录模块可以说是整个管理系统的核心。其主要功能是通过查询数据库的相关数据,将会议的各种信息输出到浏览器页面中,用户不但可以浏览特定会议的详情,同时也可以对会议内容进行打印预览或打印操作。同时,用户也可将所有会议的信息以Excel报表形式导出。
2.WebBrowser打印技术
webBrowser打印,是IE浏览器内置的浏览器空间,其优点在于无须用户下载目标文件,且可以支持客户端独立完成目标文件的打印,这样可以减轻服务器负担;缺点是源文档的分析操作比较复杂,并且要对源文档中要打印的内容进行约束。
在本项目中封装两个JavaScript脚本函数,通过不同的函数加载不同的WebBrowser控件,完成报表的打印预览和打印操作。关键代码如下:
<script>
function printview(){
document.all.WebBrowser1.ExecWB(7,1); // 执行打印预览
window.close();
}
function print(){
document.all.WebBrowser1.ExecWB(6,1); // 执行打印操作
window.close();
}
</script>
xmlhttp.send(null);
<object ID='WebBrowser1' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A968-00C04FD705A2'></object>
<?php
$action = $_POST["print"];
if($action == "打印预览"){ // 判断前台按钮操作
?>
<body topmargin="0" leftmargin="0" bottommargin="0" onLoad="printview();">
<?php
}else if($action == "打印"){ // 判断前台按钮操作
?>
<body topmargin="0" leftmargin="0" bottommargin="0" onLoad="print();">
<?php
}
?>
3.Excel报表生成技术分析
Excel报表是通过header()函数生成下载文件的,header函数属于HTTP函数,它的作用是发送一个原始的HTTP标头。header函数的语法如下:
void header(string string[,bool replace[,int http_response_code]])
- string:发送标头
- replace:如果一次发送多个标头,指明相似的标头是替换还是添加
- http_response_code:强制HTTP响应为指定值
生成Excel报表的关键代码如下:
<?php
header("Content-type:application/vnd.ms=excel"); // 设置HTTP头
header("Content-Disposition:filename=会议报表.xls"); //定义下载文件名称
session_start();
?>
4.文本文件中数据的获取技术分析
获取文件内容,在添加会议记录过程中会添加一个文本文档。在浏览会议记录时,会通过数据库相应的路径获取相应文件的内容并显示在浏览页面上。关键代码如下:
$myfile = fopen("$address","r"); //将文件以只读方式打开
$myline = fgets($myfile); // 按行获取文件内容
echo $myline; // 输出获取的文件内容
fclose($myfile); // 关闭文件
5.浏览会议记录实现过程
会议信息显示页面循环输出会议主要信息,首先查看tb_meeting_info数据表中是否有记录,如果数据库中没有记录,则输出“当前没有任何记录”;如果数据库中有数据,则分页输出数据。会议信息显示页viewmeeting.php关键代码如下:
<?php
header("Content-Type:text/html;charset=utf-8");
date_default_timezone_set('PRC'); // 设置为北京时间
include_once('conn/conn.php');
$sqlview = "select * from tb_meeting_info";
$num = 2; // 每页显示2条
if(isset($_GET['n_page'])){ // 判断当前页码
$c_page = $_GET['n_page']; // 将$n_page赋给变量$c_page
}else{
$c_page = 1; // 初始化变量$c_page
}
// php分页开始
$count = mysql_query("select count(*) from tb_meeting_info"); // 记录总数
// 从结果集中取得一行作为关联数组
$rs = mysql_fetch_array($count);
$totalNumber = $rs[0]; // 总记录数量
$totalPage = ceil($totalNumber/$num); // 计算出总页数(当前2页)
$startCount = ($c_page - 1) * $num; // 根据此方法计算出开始的记录
// 根据前面的计算出开始的记录和记录数
// limit用法,从$sartCount+1开始,取$num行
$result = mysql_query("select * from tb_meeting_info limit $startCount,$num");
echo "<table border='1'>";
echo "<tr>";
echo "<th>会议编号</th>";
echo "<th>会议名称</th>";
echo "<th>会议出席者</th>";
echo "<th>会议摘要</th>";
echo "</tr>";
while($row = mysql_fetch_array($result)){
echo "<tr>";
echo "<td>$row[meeting_id]</td>";
echo "<td>$row[meeting_name]</td>";
echo "<td>$row[meeting_present]</td>";
echo "<td>$row[meeting_abstruct]</td>";
echo "</tr>";
}
echo "</table>";
if($c_page != 1){ // 如果不是第一页
?>
<a href="viewmeeting.php?n_page=<?php echo $c_page - 1;?>">上一页</a> <!-- 显示上一页 -->
<?php
}
for($i = 1;$i <= $totalPage;$i++){ //循环显示页码
?>
<a href="viewmeeting.php?n_page=<?php echo $i;?>"><?php echo $i;?></a>
<?php
}
if($c_page < $totalPage){ // 当前页数小于总页数,显示下一页链接
?>
<a href="viewmeeting.php?n_page=<?php echo $c_page + 1;?>">下一页</a>
<?php
}
?>
6.会议记录详细信息浏览实现过程
对于会议记录管理系统,不仅可以浏览会议的主要信息,还可以查看会议的详细内容,阅读特定的会议内容。
创建showinfo.php文件,根据GET方法传递ID值,查询数据库中的数据,返回查询结果。并且通过文件系统函数读取文本文件中存储的会议记录内容。关键代码如下:
<?php
header("Content-Type:text/html;charset=utf-8");
date_default_timezone_set('PRC'); // 设置为北京时间
include_once "conn/conn.php";
$id = $_GET["id"]; // 获取传递的ID值
// 数据库查询语句
$sqlstriii = "select * from tb_meeting_info where meeting_id = $id";
$s_rst = mysql_query($sqlstriii);
$retult = mysql_fetch_array($s_rst,MYSQL_ASSOC);
// print_r($retult);
?>
<div class="infoshow">
<table width="560" border="0" cellspacing="0" cellpadding="0">
<form action="printwindow.php" method="post">
<tr>
<td colspan="4" align="center">
<h3>会议记录详情</h3>
</td>
</tr>
<tr>
<td width="134"><div align="right">会议编号:</div></td>
<td width="340"><?php echo $retult['meeting_id']?></td>
<td width="135"><div align="right">会议名称:</div></td>
<td width="341"><?php echo $retult['meeting_name']?></td>
</tr>
<!-- 省略部分代码 -->
<tr>
<td height="200" colspan="4">
<div>
<?php
$address = $retult['meeting_address']; // 文件路径及文件名称
$myfile = fopen("$address","r"); // 将文件以只读形式打开
$myline = fgets($myfile); // 按行读取文件内容
echo $myline; // 输出文件内容
fclose($myfile); // 关闭文件
?>
</div>
</td>
</tr>
<tr>
<td colspan="4" align="center">
<input type="hidden" name="id" value="<?php echo $id;?>" />
</td>
</tr>
<div class="printbutton">
<input type="submit" value="打印预览" name="print" />
<input type="submit" value="打印" name="print" />
</div>
</form>
</table>
</div>
printwindow.php关键代码如下:
<script>
function printview(){
document.all.WebBrowser1.ExecWB(7,1); // 执行打印预览
window.close();
}
function print(){
document.all.WebBrowser1.ExecWB(6,1); // 执行打印操作
window.close();
}
</script>
<object ID='WebBrowser1' WIDTH=0 HEIGHT=0 CLASSID='CLSID:8856F961-340A-11D0-A968-00C04FD705A2'></object>
<?php
$action = $_POST["print"];
if($action == "打印预览"){ // 判断前台按钮操作
?>
<body topmargin="0" leftmargin="0" bottommargin="0" onLoad="printview();">
<?php
}else if($action == "打印"){ // 判断前台按钮操作
?>
<body topmargin="0" leftmargin="0" bottommargin="0" onLoad="print();">
<?php
}
?>