上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">共有留言 <?php echo $total;? > 条 每页显示 <?php echo $pagesize;?> 条 第 <?php echo $page;?> 页/共 <?php echo $pagecount; ?> 页</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> <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> <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> <a href="<?php echo $_SERVER["PHP_SELF"]?>?page=<?php echo $pagecount; ?>&id=<?php echo urlencode($id);?>" class="a1">尾页</a></div></td> </tr> </table>