查看留言是默认打开留言本时进入的页面,也就是首页,名称为index.php。在前面,我们向数据表中已添加了一条测试数据,因此默认首页中也只显示这一条数据,如图22-7所示。
图22-7 留言本首页
在留言本首页可分为三部分。第一部分为页眉,显示了留言板的标题和导航链接(“查看”留言和“我要留言”);第二部分是留言的主体,每一条信息以一个水平线作为分隔;第三部分是页脚,这里显示了使用MySQL数据库服务器的版本。
如下所示即为图22-3所示index.php文件的内容:
<!DOCTYPE html PUBLIC "-//W 3C //DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>PHP GuestBook V1.0 | www.itZcn.com</title>
<link media=all href="style_1.css" type=text/css rel=Stylesheet>
</head>
<body>
<div id="mainbody">
<div id="main">
<div id="divGuestBookNav"><h2>PHP GuestBook V1.0 <span id="gbAction"> • <a href='index.php' id='viewGBLink'>查看留言</a> • <a href='AddWord.php' id='sendGBLink'>我要留言</a> </h2></div>
<UL id='ulGuestBook' class='boxGB'></UL>
</div>
</div>
</div>
<?
include "./main_body.php";
?>
</body>
</html>
读者应该很容易看出,在这个页面中使用了很多HTML代码进行布局,惟一的PHP代码为最后一句“include "./main_body.php"”,它的作用是将页面main_body.php中的内容包含到当前页面中,使用这种方法可以实现多个模块和功能的重用,在后面我们将多次使用。
接下来介绍显示留言的main_body.php页面,由于这个页面中需要完成与MySQL数据库的交互操作,因此包含了大量的PHP代码,如下所示:
<?
require_once 'fun.php';
$sql="select * from $table";
//建立数据库连接
$link=mysql_connect($hostname,$username,$password);
//打开数据库
mysql_select_db($database,$link);
//执行查询语句
$result=mysql_query($sql,$link);
//获取查询结果的行数
$totlerows=@mysql_num_rows($result);
echo ("<p> <br>");
echo (" ");
echo "<br>";
//判断是否是最后一行
while (list($pid,$name,$email,$url,$content)=mysql_fetch_row($result))
{
//突出显示留言编号(id)
echo "<h1>$pid</h1>";
?>
<div class="tblcontent" >
<div class="spanTitle">作 者:<?=$name?></div>
<div class="spanTitle">Email:<a href="mailto:<?=$email?>"><?=$email?></a></div>
<div class="spanTitle">主 页:<a href="<?=$url?>" target="_blank"><?=$url?></a></div>
<div class="spanTitle">内 容:</div>
<div><h3><?=$content?></h3></div>
</div>
<hr size="1" noshade="noshade" class="LineStyle">
<?}
echo "MySQL 服务器版 本 ".mysql_get_server_info();
//关闭数据库连接
mysql_close();
?>
在页面中对于关键语句都给出了注释。注意,第一行语句“require_once 'fun.php'”的含义同样是包含fun.php页面的代码,与include类似,但两者之间有很大差别。
include()和require()语句都可以实现包含并运行指定文件。但include()产生一个警告,而require()则导致一个致命错误。换句话说,如果想在遇到丢失文件时停止处理页面就用require();include()则不是这样,脚本会继续运行。require_once()语句在脚本执行期间包括并运行指定文件。此行为和require()语句类似,唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。
再往下的语句,演示了一个典型的数据交互的例子。首先,与数据库建立连接,再打开指定的数据并执行查询语句,然后根据查询的结果选择一种方式显示出来(这里为列表的形式),最后关闭数据库连接。
fun.php文件中存储的是有关留言本程序中使用的全局信息,在添加留言时同样需要他们,例如数据库名称、服务器地址等,如下即为该文件的内容:
<?php
$username="root"; //连接数据库的用户名
$password="123456"; //连接数据库的密码
$database="gb"; //数据库名
$hostname="localhost"; //服务器地址
$table = 'guestbook_demo'; //表名
$sql="select * from $table"; //查询语句
?>