php(做為現在的主流開發語言)實現對文本數據庫的數據顯示、加入、修改、刪除、查詢五大基本操作的方法
我用一個留言本程序作為例子,闡述php(做為現在的主流開發語言)實現對文本數據庫的數據顯示、加入、修改、刪除、查詢五大基本操作的方法。
此文本數據庫共有字段10個:客戶IP、發言時間、客戶名、客戶EMAIL、客戶主頁地址、留言表情圖片名、客戶QQ、客戶形象圖片、留言內容、管理員回復內容。
1、加入數據程序段。
$date=date("Y-m-d H:i:s");//取得系統時間
$ip = $HTTP_SERVER_VARS[REMOTE_ADDR]; //取得發言的IP地址
$text=encode($gb_text);//去掉留言內容後面的空格.
$fp=fopen("gb.dat","a");//以只寫模式打開gb.dat文本文件,文件指針指向文件尾部.
$str=$ip." ".$date." ".$gb_name." ".$gb_email." ".$gb_home." ".$face." ".$gb_qq." ".$head." ".$text." ".$reply."
";//將所有留言的數據賦予變量$str," "的目的是用來今後作數據分割時的數據間隔符號。
fwrite($fp,$str);//將數據寫入文件
fclose($fp);//關閉文件
showmessage("留言成功!","index.php(做為現在的主流開發語言)","3");//留言成功,3秒後自動返回主界面。
其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由發言表單傳過來的數據。
2、數據顯示程序段
<?
if (file_exists("gb.dat")){//檢測文件是否存在
$array=file("gb.dat");//將文件全部內容讀入到數組$array
$arr=array_reverse($array);//將$array裡的數據安行翻轉排列(即最後一行當第一行,依此類推)讀入數組$arr的每一個單元($arr[0]...)。
$num=count($array);//獲取數組$array裡的信息數(一行為一條信息)
if ($num>0){//如果信息數大於零(即文本數據庫不為空)
$total=ceil($num/$pagesize);//計算總頁數(取最大整數,即凡有小數點都進一取整,$pagesize為預設的每頁顯示的信息數)
if($page<1){//如果當前頁面數碼號小於1
$page=1;//則賦值為1
}
$number=($page-1)*$pagesize;//計算當前所顯示第一個留言的數碼號(數碼號從零開始,主要是達到與數組單元號對應的目的)
for($i=0;$i<=$pagesize-1;$i++){//進入循環
$row=explode(" ",$arr[$number]);//以" "作為分割符,分割數組$arr中每第$number個單元的數據,並將這些數據賦予數組$rom
list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//將數組$row裡的單元數據按順序賦予括號裡的變量
?>
<img src=<? echo $head ?> >//顯示客戶形象圖片
<br>
<font color="#0099CC">昵稱【<? echo $name ?><font size="2">】<br>//顯示客戶名
發表於:<? echo $datetime ?>//顯示留言發表時間
<br>
<img src=<? echo $face ?>>//顯示客戶留言表情圖片
<? echo $name ?>說:<? echo $text; ?>//顯示客戶留言內容
<br>
<? echo $reply ?>//顯示回復內容
<br>
<a href="<? echo $home ?>" target="_blank">訪問<? echo $name ?>的主頁</a>//客戶主頁的超連接
<a href="mailto:<? echo $email ?>">給<? echo $name ?>發信</a>//客戶E-MAIL的連接
<? echo $name ?>的QQ號碼是<? echo $qq ?>//顯示客戶的QQ號碼
<? echo $name ?>的IP地址為<? echo $ip ?>" //顯示客戶的IP地址
<a href="reply.php(做為現在的主流開發語言)?time=<? echo $datetime ?>">回復</a>//留言回復的連接語句
<a href="del.php(做為現在的主流開發語言)?time=<? echo $datetime ?>">刪除</a>//留言刪除的語句(以客戶留言時間$datetime作為刪除標識)
<br>
<?
if ($number == $num-1)//如果數組的單元號等於總留言數減一(因為單元號以零開始的,所以這意味著這是最後一條留言)
{
break;//跳出循環
}
$number = $number + 1; //數組單元號加1
}//循環結束符
}
if ($page <> 1)//如果當前頁面數碼號不等於1
{
$back = $page - 1;//當前頁面數碼號減1,並將此值賦予變量$back
echo "<a href=index.php(做為現在的主流開發語言)?page=1>第一頁</a>";//顯示第一頁的連接
echo " <a href=index.php(做為現在的主流開發語言)?page=$back>上一頁</a>" ;當前頁面數碼號等於$back,並顯示其連接
}
if ($page <> $total)//如果當前頁面數碼號不等於總頁數號(最後一頁數碼號)
{
$next = $page + 1;//當前頁面數碼號加1並賦予變量$next
echo " <a href=index.php(做為現在的主流開發語言)?page=$next>下一頁</a>" ;//顯示下一頁連接
echo " <a href=index.php(做為現在的主流開發語言)?page=$total>最後一頁</a>"; 顯示最後一頁連接
}
echo "頁數:$page / $total";//顯示當前頁面數碼號和顯示最後一頁數碼號
echo "共有 $num 條留言";//顯示留言數信息
}
else {
echo "<center>當前沒有任何留言!</center>";//如果文件內容為空則顯示的信息
}
else {
echo "<center>數據文件丟失,請聯系管理員!或發布留言重新建立數據文件!</center>";//如果文件不存在顯示的信息
}