实战突击
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

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" />
        &nbsp;&nbsp;
        <input type="submit" value="打印"  name="print" />
        </form>