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

2.8 查看留言模块设计

2.8.1 查看留言模块概述

用户登录后,单击首页上的“查看留言”链接,将进入浏览页面。在浏览页面中,用户除了可以看到留言信息外,还可以看到对该留言的回复。如果留言或者回复是当前用户所发表的,那么还会看到修改的超链接。如果回复是当前用户所发表的,那么除显示上述超链接外,还显示删除的超链接。查看留言页面的运行结果如图2.14所示。

图2.14 查看留言页面

2.8.2 验证数据类型与取整

用户发表完留言后,可以通过查看留言模块查看用户的所有留言内容。由于用户的留言数目较多,如果在同一页面中显示所有留言信息,则会给用户浏览带来很大的不便,所以通过分页的方式显示用户留言内容是不错的选择。在实现用户留言内容分页显示时,主要应用is_numeric()函数判断用户通过GET方法提交的数据是否为数值型,并通过ceil()函数对页码数据进行向上取整。

1.is_numeric()函数

如果该函数的参数为数字或数字字符串则返回true,否则返回false。语法如下:

        bool is_numeric ( mixed var )

参数var为要进行判断的数据。

2.ceil()函数

ceil()函数用于对浮点数进行向上取整。语法如下:

        float ceil ( float value )

参数value为要进行向上取整的数据。

2.8.3 查看留言模块实现过程

在查看留言模块中,以分页的形式循环输出留言信息,并且对当前用户的权限进行判断,根据其权限控制输出的操作链接。下面是显示用户留言信息的关键代码:

代码位置:光盘\MR\02\ lookleaveword.php

        <?php
        $sql=mysql_query("select count(*) as total from tb_leaveword ",$conn);
            $infos=mysql_fetch_array($sql);
            $total=$infos['total'];              //获取总留言条数
            if($total==0){                       //如果总留言条数为0,则给出提示
                        echo "<div align=center>对不起,暂无留言!</div>";
                        }else{
                  if(!isset($_GET["page"]) || !is_numeric($_GET["page"])){
                      //判断查询字符串page的值是否为空,如果为空则默认显示第1页
                    $page=1;
                      }else{
                    $page=intval($_GET["page"]);
                          }
                  $pagesize=3;                  //规定每页显示3条留言
                  if($total%$pagesize==0){      //获取总页数
                    //如果获取的总页数是整数,则返回整数值
                    $pagecount=intval($total/$pagesize);
                  }else{
                    //获取的总页数不是整数时,进行向上取整
                    $pagecount=ceil($total/$pagesize);
                  }
        $sql=mysql_query("select * from tb_leaveword order by createtime desc limit
        ".($page-1)*$pagesize.",$pagesize  ",$conn);
        while($info=mysql_fetch_array($sql)){        //通过while循环显示所有留言
        //通过传递的ID值查询当前留言者的个人信息
        $sql1=mysql_query("select usernc,face,ip,email,qq from tb_user where id='".
        $info["userid"]."'",$conn);
        $info1=mysql_fetch_array($sql1);
        ?>
                      …            //显示用户信息和用户留言信息
        <?php
        //从管理员数据表中查询登录的版主id
        $adms=mysql_query("select id from tb_adm where userword='".$adm."'",$conn);
        $re=mysql_fetch_array($adms);
        //判断当前登录的管理员是不是该条留言的发表者,如果是则显示“编辑”按钮
        if($re['id']==$info['userid'] && $adm!=""){
        ?>
              …                    //显示“编辑”按钮
        <?php
        //如果当前用户是该留言的发表者,则显示“编辑”按钮
        }elseif($user== $info1['usernc'] and $user!=""){
        ?>
            …                      //显示“编辑”按钮
        <?php
        }else{
        ?>
            …                        //“编辑”按钮为灰色,即不显示
        <?php
        }
        ?>
        <?php
              if($adm!=""){           //管理员登录后,可以对帖子进行回复
        ?>
            …                         //显示回复此帖
        <?php
              //当前用户不是该帖子的发表者时,可以对帖子进行回复
              }else if($user!= $info1['usernc'] and $user!=""){
        ?>
            …                         //显示回复此帖
        <?php
              }else{
        ?>
        <?php
            }
        ?>

上述代码中,留言信息的分页显示,是通过MySQL数据库的扩展关键字limit来实现的,该关键字后跟两个参数。其中,第一个参数用于指定要显示记录的起始位置,而第二个参数用于指定所要显示的记录个数。

在显示用户留言时,根据超链接传递的page值来决定所要显示的记录范围,用于实现向页面中传入查询字符串。关键代码如下:

        <table width="550" height="25" border="0" align="center" cellpadding="0"
        cellspacing="0">
              <tr>
                  <td width="351"><div align="left">共有留言&nbsp;<?php echo $total;?
                  >&nbsp;条&nbsp;每页显示&nbsp;<?php echo $pagesize;?>&nbsp;条&nbsp;第
                  &nbsp;<?php echo $page;?>&nbsp;页/共&nbsp;<?php echo $pagecount;
                  ?>&nbsp;页</div></td>
                  <td width="199"><div align="right">
              <a href="<?php echo $_SERVER["PHP_SELF"]?>?page=1&id=<?php echo
              urlencode($id);?>" class="a1">首页</a>&nbsp;
              <a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php
                      //判断当前页是否大于第一页,如果是则当用户单击“上一页”超链接时,使变量
                      //$page的值减1,从而实现向前翻页的功能
                      if($page>1)
                            echo $page-1;
                      else
                            echo 1;
              ?>&id=<?php echo urlencode($id);?>" class="a1">上一页</a>&nbsp;
              <a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php
                      //判断当前页码是否小于总的页数,如果是则当用户单击“下一页”超链接时,使变
                      //量$page的值加1,从而实现向后翻页的功能
                      if($page<$pagecount)
                        echo $page+1;
                      else
                            echo $pagecount;
              ?>&id=<?php echo urlencode($id);?>" class="a1">下一页</a>&nbsp;
              <a href="<?php  echo $_SERVER["PHP_SELF"]?>?page=<?php echo $pagecount;
              ?>&id=<?php echo urlencode($id);?>" class="a1">尾页</a></div></td>
              </tr>
        </table>