查看留言是預設開啟留言本時進入的頁面,也就是首頁,名稱為index.php。在前面,我們向資料表中已添加了一條測試資料,因此預設首頁中也只顯示這一條資料,22-7所示。
圖22-7 留言本首頁
在留言本首頁可分為三部分。第一部分為頁首,顯示了留言板的標題和導航連結(“查看”留言和“我要留言”);第二部分是留言的主體,每一條資訊以一個水平線作為分隔;第三部分是頁尾,這裡顯示了使用MySQL資料庫伺服器的版本。
如下所示即為圖22-3所示index.php檔案的內容:
<!DOCTYPE html PUBLIC "-//W3C//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"; //查詢語句
?>