php 對文本資料庫資料的操作有哪些?PHP實現對文本資料庫的資料有顯示、加入、修改、刪除、查詢五大基本操作的方法 。那麼,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."\n";//將所有留言的資料賦予變數$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>";//如果檔案不存在顯示的資訊 }
3、資料修改程式段
$list=file("gb.dat");//讀取整個gb.dat檔案到數組$list,數組每一個元素為一條留言($list[0]是第一條留言的資料、$list[1]是第一條留言的資料..... $n=count($list);//計算$list內容裡的留言總數,並賦予變數$n if ($n>0){ //如果留言數大於0$fp=fopen("gb.dat","w");//則以唯寫模式開啟檔案gb.dat $gb_reply=encode($gb_reply); for ($i=0;$i<$n;$i++) {//進入迴圈 if(eregi($ttime,$list[$i])){//將送來發留言時間$ttime與數組單元$list裡內容進行字串匹配比較 $f=explode(" ",$list[$i]);//如果找到匹配,就以" "作為分隔字元,切開留言資訊$list[$i](第$i條留言),並將這些資料賦予數組$f $f[9]=$gb_reply;//將$f[9](留言資訊最後一條資料)用$gb_reply(回複內容)代替。 $list[$i]=$f[0]." ".$f[1]." ".$f[2]." ".$f[3]." ".$f[4]." ".$f[5]." ".$f[6]." ".$f[7]." ".$f[8]." ".$f[9]."\n"; //將數組單元$list[$i]的內容用數組$f加上分隔字元" "代替(其中$f[9]是修改了的新資料)。 break;//跳出迴圈 } }//迴圈結束符 } FOR($i=0;$i<=$n;$i++){//進入迴圈 fwrite($fp,$list[$i]);//將數組$list的每個單元為一行,寫入檔案gb.dat }//迴圈結束符 fclose($fp);//關閉檔案 showmessage("回複成功!","index.php");//回複成功,自動返回主介面。
4、資料刪除程式段
$list=file("gb.dat");//讀取整個gb.dat檔案到數組$list,數組每一個元素為一條留言($list[0]是第一條留言的資料、$list[1]是第一條留言的資料..... $n=count($list);//計算$list內容裡的留言總數,並賦予變數$n if ($n>0){//如果留言數大於0 $fp=fopen("gb.dat","w");//則以唯寫模式開啟檔案gb.dat for ($i=0;$i<$n;$i++) {//進入迴圈 if(eregi($ttime,$list[$i])){//將發送過來發留言時間$ttime與數組$list[$i]裡的字串進行匹配比較 $list[$i]="";//如果匹配成功,則將$list[$i]清空(達到刪除的目的) break;//跳出迴圈 } }//迴圈結束符 FOR($i=0;$i<=$n;$i++){//進入迴圈 fwrite($fp,$list[$i]);//將數組$list的每個單元為一行,寫入檔案gb.dat } //迴圈結束符 fclose($fp);//關閉檔案 showmessage("刪除成功!","index.php");//刪除成功,自動返回主介面。 }
5、資料查詢程式段
<form action="search.php" method="post"> <font color="#0099CC" size="2">搜尋索引鍵: <input name="found" type="text" id="found" style="background-color:#FFFFFF; color:#8888AA; border: 1 double #3399CC" size="12"> <input name="submit" type="image" src="image/search.gif" alt="留言搜尋"> </font></td></tr> </table> </form> ////////////////////////////////上面是搜尋表單語句段 <? $id=0; $list=file("gb.dat");//讀取整個gb.dat檔案到數組$list,數組每一個元素為一條留言($list[0]是第一條留言的資料、$list[1]是第一條留言的資料..... $n=count($list);//計算$list內容裡的留言總數,並賦予變數$n $found=trim($found); if (!$found){ //如果$found為假 echo "<center>您沒有輸入任何關鍵字!</center>";//作相關顯示 } else { if($n>0){//如果留言數大於0 for ($i=0;$i<$n;$i++) {//進入迴圈 if(eregi($found,$list[$i])){//輸入的關鍵字與數組$list[$i]裡的字串進行匹配比較 $row=explode(" ",$list[$i]); $id=1; //如果找到匹配,就以" "作為分隔字元,切開留言資訊$list[$i](第$i條留言),並將這些資料賦予數組$row.並將變數$id賦予1,以便作為是否找到匹配的判斷。 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($id==0){ echo "<center>沒有找到與關鍵字匹配的留言!</center>";}//如果$id=0則表示沒找到匹配,顯示相關提示