1.9 浏览会议记录模块设计
1.9.1 浏览会议记录模块概述
浏览会议记录模块可以说是整个管理系统的核心。其主要功能是通过查询数据库的相关数据,将会议的各种信息输出到浏览页面中,用户不但可以浏览特定会议的详情,同时也可以对会议内容进行打印预览或打印操作。同时,用户也可将所有会议的信息以Excel报表形式导出。浏览会议页面运行结果如图1.18所示。
图1.18 浏览会议页面
1.9.2 WebBrowser打印技术
WebBrowser打印,是IE浏览器内置的浏览器控件,其优点在于无须用户下载目标文件,且可以支持客户端独立完成目标文件的打印,这样可以减轻服务器负担;缺点是源文档的分析操作比较复杂,并且要对源文档中要打印的内容进行约束。
应用WebBrowser控件不但可以实现报表的打印功能,还可以进行其他操作,如刷新和保存页面、页面设置、查看页面属性等。在开发中该控件需要调用Execwb()方法完成上述功能,为该方法传递不同的参数实现不同的功能。具体参数如下。
document.all.WebBrowser.Execwb(7,1):表示打印预览。
document.all.WebBrowser.Execwb(6,1):表示打印。
document.all.WebBrowser.Execwb(6,6):表示直接打印。
document.all.WebBrowser.Execwb(8,1):表示页面设置。
document.all.WebBrowser.Execwb(1,1):打开页面。
document.all.WebBrowser.Execwb(2,1):关闭所有打开的IE窗口。
document.all.WebBrowser.Execwb(4,1):保存网页。
document.all.WebBrowser.Execwb(10,1):查看页面属性。
document.all.WebBrowser.Execwb(17,1):全选。
document.all.WebBrowser.Execwb(22,1):刷新。
document.all.WebBrowser.Execwb(45,1):关闭窗体无提示。
在本项目中封装两个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-A96B-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 } ?>
1.9.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(); ?>
1.9.4 文本文件中数据的获取技术分析
获取文件内容,在添加会议记录过程中会添加一个文本文档。在浏览会议记录时,会通过数据库相应的路径获取相应文件的内容并显示在浏览页面上。关键代码如下:
$myfile=fopen("$address","r"); //将文件以只读方式打开 $myline=fgets($myfile); //获取文件内容 echo $myline; //输出获取的文件内容 fclose($myfile); //关闭文件
从文本文件中读取数据应用的是文件操作函数。
1.fopen()函数
该函数的作用是打开本地或者远程文件,其中参数filename为一个字符型变量,代表打开的文件名称;另一个参数是mode,该参数有6个可选模式,分别是r、r+、w、w+、a、a+。根据可选模式,可对文件执行不同的操作。
2.fgets()函数
该函数的作用是按行返回文件内容,该函数语法如下:
string fgets ( int handle [, int length] )
从handle指向的文件中读取一行,并返回长度最多为length-1字节的字符串。
3.fclose()函数
该函数的作用是关闭一个已打开的文件指针,如果成功则返回true,失败则返回false。
1.9.5 浏览会议记录实现过程
会议信息显示页面循环输出会议的主要信息。首先查看tb_meeting_info数据表中是否有记录,如果数据库中没有记录,则输出“当前没有任何记录”;如果数据库中有数据,则分页输出数据。会议信息显示页(viewmeeting.php)的代码如下:
<?php $sqlview="select * from tb_meeting_info"; $num=2; //每页显示最大记录数 if(isset($_GET['n_page'])){ //判断当前页码 $c_page = $_GET['n_page']; //将$n_page赋给变量$c_apge }else{ $c_page = 1; //初始化变量$c_page } $l_rst = $conn -> PageExecute($sqlview,$num,$c_page); //执行PageExecute函数 $rst_view = $conn->execute($sqlview); $record=count($rst_view->GetRows()); //获取总记录数 if($record==0){ echo "<span class=\"norecord\">当前没有任何记录</span>"; }else{ ?> <table width="728" border="0" cellspacing="0" cellpadding="0" bordercolor="#66CC00"> <!--省略部分代码--> </table> <div class="sepa_page"> <table> <tr> <td> <font color='#999999'>当前是第<?php echo $l_rst -> absolutePage(); ?>页/一共 <?php echo $l_rst -> LastPageNo(); ?>页</font> <?php if(!$l_rst -> AtfirstPage()){ //如果当前页不是首页 ?> <a href ="<?php echo "?lmbs=$_GET['lmbs']&n_page=1" ?>"> 首页 </a> <a href ="<?php echo "?lmbs=$_GET['lmbs']&n_page=".($l_rst -> absolutePage() - 1); ?>"> 上一页 </a> <?php } if(!$l_rst -> AtlastPage()){ //如果当前页不是尾页 ?> <!-- 输出向下翻页超链接 --> <a href = "<?php echo "?lmbs=$_GET['lmbs']&n_page=".($l_rst -> absolutePage() + 1); ?>"> 下一页 </a> <a href ="<?php echo "?lmbs=$_GET['lmbs']&n_page=".($l_rst -> LastPageNo());?>"> 尾页 </a> <?php } ?><?php } ?> </td> <td width="100" align="right"><span style="color:#FF0000">点此导出报表>>></span></td> <td width="60"> <a href="createform.php"><img align="bottom"src="images/out_15.jpg" width= "48" height="20" border="0" /></a> </td> </tr> </table>
1.9.6 会议记录详细信息浏览实现过程
对于会议记录管理系统,不仅可以浏览会议的主要信息,还可以查看会议的详细内容,阅读特定的会议内容。运行会议详细信息的页面结果如图1.19所示。
图1.19 会议详细信息运行结果
创建showinfo.php文件,根据GET方法传递ID值,查询数据库中的数据,返回查询结果。并且通过文件系统函数读取文本文件中存储的会议记录内容。其代码如下:
<?php $id=$_GET["id"]; //获取传递的ID值 //数据库查询语句 $sqlstriii="select * from tb_meeting_info where meeting_id =$id"; $s_rst=$conn->Execute($sqlstriii); //执行查询操作 ?> <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 class="ht">明日科技有限公司会议记录详情 </h3></td></tr> <tr> <td width="134"><div align="right">会议编号:</div></td> <td width="340"><?php echo $s_rst->fields[0]?></td> <td width="135"><div align="right">会议名称:</div></td> <td width="341"><?php echo $s_rst->fields[1]?></td> </tr> <!--省略部分代码--> <tr> <td height="200" colspan="4"> <div class="content"> <?php $address=$s_rst->fields[9]; //获取文件路径及文件名称 $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> </table> </div> <div class="printbutton"> <input type="submit" value="打印预览" name="print" /> <input type="submit" value="打印" name="print" /> </form>