<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[沧海一粟]]></title> 
<link>http://www.dzhope.com/index.php</link> 
<description><![CDATA[Web系统架构与服务器运维,php开发]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[沧海一粟]]></copyright>
<item>
<link>http://www.dzhope.com/post//</link>
<title><![CDATA[PHP对文本数据库的基本操作方法(留言簿范例)]]></title> 
<author>jed &lt;jed521@163.com&gt;</author>
<category><![CDATA[代码编程]]></category>
<pubDate>Tue, 06 Nov 2007 01:39:57 +0000</pubDate> 
<guid>http://www.dzhope.com/post//</guid> 
<description>
<![CDATA[ 
	　PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法 <br/>我用一个留言本程序作为例子，阐述PHP实现对文本数据库的数据显示、加入、修改、删除、查询五大基本操作的方法。 <br/><br/>此文本数据库共有字段10个：客户IP、发言时间、客户名、客户EMAIL、客户主页地址、留言表情图片名、客户QQ、客户形象图片、留言内容、管理员回复内容。 <br/><br/>1、加入数据程序段。 <br/><br/><div class="code"><br/><br/>$date=date(&quot;Y-m-d H:i:s&quot;);//取得系统时间 <br/>$ip = $HTTP_SERVER_VARS&#91;REMOTE_ADDR&#93;; //取得发言的IP地址 <br/>$text=encode($gb_text);//去掉留言内容后面的空格. <br/>$fp=fopen(&quot;gb.dat&quot;,&quot;a&quot;);//以只写模式打开gb.dat文本文件,文件指针指向文件尾部. <br/>$str=$ip.&quot;　&quot;.$date.&quot;　&quot;.$gb_name.&quot;　&quot;.$gb_email.&quot;　&quot;.$gb_home.&quot;　&quot;.$face.&quot;　&quot;.$gb_qq.&quot;　&quot;.$head.&quot;　&quot;.$text.&quot;　&quot;.$reply.&quot;&#92;n&quot;;//将所有留言的数据赋予变量$str，&quot;　&quot;的目的是用来今后作数据分割时的数据间隔符号。 <br/>fwrite($fp,$str);//将数据写入文件 <br/>fclose($fp);//关闭文件 <br/>showmessage(&quot;留言成功!&quot;,&quot;index.php&quot;,&quot;3&quot;);//留言成功，3秒后自动返回主界面。 <br/>其中的$gb_name 、$gb_email、$gb_home、$face、$gb_qq、$head、$gb_text、$reply是由发言表单传过来的数据。 <br/><br/></div><br/><br/><br/>2、数据显示程序段 <br/><br/><div class="code"><br/><br/>＜? <br/>if (file_exists(&quot;gb.dat&quot;))&#123;//检测文件是否存在 <br/>$array=file(&quot;gb.dat&quot;);//将文件全部内容读入到数组$array <br/>$arr=array_reverse($array);//将$array里的数据安行翻转排列（即最后一行当第一行，依此类推）读入数组$arr的每一个单元（$arr&#91;0&#93;...）。 <br/>$num=count($array);//获取数组$array里的信息数(一行为一条信息) <br/>if ($num＞0)&#123;//如果信息数大于零（即文本数据库不为空） <br/>$total=ceil($num/$pagesize);//计算总页数(取最大整数,即凡有小数点都进一取整，$pagesize为预设的每页显示的信息数) <br/>if($page＜1)&#123;//如果当前页面数码号小于1 <br/>$page=1;//则赋值为1 <br/>&#125; <br/>$number=($page-1)*$pagesize;//计算当前所显示第一个留言的数码号（数码号从零开始，主要是达到与数组单元号对应的目的） <br/>for($i=0;$i＜=$pagesize-1;$i++)&#123;//进入循环 <br/>$row=explode(&quot;　&quot;,$arr&#91;$number&#93;);//以&quot;　&quot;作为分割符,分割数组$arr中每第$number个单元的数据,并将这些数据赋予数组$rom <br/>list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//将数组$row里的单元数据按顺序赋予括号里的变量 <br/>?＞ <br/>＜img src=＜? echo $head ?＞ ＞//显示客户形象图片 <br/><br/><br/>＜font color=&quot;#0099CC&quot;＞昵称【＜? echo $name ?＞＜font size=&quot;2&quot;＞】<br/>//显示客户名 <br/>发表于：＜? echo $datetime ?＞//显示留言发表时间 <br/><br/><br/>＜img src=＜? echo $face ?＞＞//显示客户留言表情图片 <br/>＜? echo $name ?＞说:＜? echo $text; ?＞//显示客户留言内容 <br/><br/><br/>＜? echo $reply ?＞//显示回复内容<br/>　＜a href=&quot;＜? echo $home ?＞&quot; target=&quot;_blank&quot;＞访问＜? echo $name ?＞的主页＜/a＞//客户主页的超连接 <br/>＜a href=&quot;mailto:＜? echo $email ?＞&quot;＞给＜? echo $name ?＞发信＜/a＞//客户E-MAIL的连接 <br/><br/>＜? echo $name ?＞的QQ号码是＜? echo $qq ?＞//显示客户的QQ号码 <br/>＜? echo $name ?＞的IP地址为＜? echo $ip ?＞&quot; //显示客户的IP地址 <br/>＜a href=&quot;reply.php?time=＜? echo $datetime ?＞&quot;＞回复＜/a＞//留言回复的连接语句 <br/>＜a href=&quot;del.php?time=＜? echo $datetime ?＞&quot;＞删除＜/a＞//留言删除的语句（以客户留言时间$datetime作为删除标识） <br/><br/><br/>＜? <br/>if ($number == $num-1)//如果数组的单元号等于总留言数减一（因为单元号以零开始的，所以这意味着这是最后一条留言） <br/>&#123; <br/>break;//跳出循环 <br/>&#125; <br/>$number = $number + 1; //数组单元号加1 <br/>&#125;//循环结束符 <br/>&#125; <br/>if ($page ＜＞ 1)//如果当前页面数码号不等于1 <br/>&#123; <br/>$back = $page - 1;//当前页面数码号减1，并将此值赋予变量$back <br/>echo &quot;＜a href=index.php?page=1＞第一页＜/a＞&quot;;//显示第一页的连接 <br/>echo &quot; ＜a href=index.php?page=$back＞上一页＜/a＞&quot; ;当前页面数码号等于$back，并显示其连接 <br/>&#125; <br/>if ($page ＜＞ $total)//如果当前页面数码号不等于总页数号（最后一页数码号） <br/>&#123; <br/>$next = $page + 1;//当前页面数码号加1并赋予变量$next <br/>echo &quot; ＜a href=index.php?page=$next＞下一页＜/a＞&quot; ;//显示下一页连接 <br/>echo &quot; ＜a href=index.php?page=$total＞最后一页＜/a＞&quot;; 显示最后一页连接 <br/>&#125; <br/>echo &quot;页数：$page / $total&quot;;//显示当前页面数码号和显示最后一页数码号 <br/>echo &quot;共有 $num 条留言&quot;;//显示留言数信息 <br/>&#125; <br/>else &#123; <br/>echo &quot;＜center＞当前没有任何留言！＜/center＞&quot;;//如果文件内容为空则显示的信息 <br/>&#125; <br/>else &#123; <br/>echo &quot;＜center＞数据文件丢失，请联系管理员！或发布留言重新建立数据文件！＜/center＞&quot;;//如果文件不存在显示的信息 <br/>&#125; <br/><br/><br/></div><br/><br/><br/>3、数据修改程序段 <br/><br/><div class="code"><br/><br/>$list=file(&quot;gb.dat&quot;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list&#91;0&#93;是第一条留言的数据、$list&#91;1&#93;是第一条留言的数据..... <br/>$n=count($list);//计算$list内容里的留言总数,并赋予变量$n <br/>if ($n＞0)&#123; //如果留言数大于0<br/><br/>　$fp=fopen(&quot;gb.dat&quot;,&quot;w&quot;);//则以只写模式打开文件gb.dat <br/>$gb_reply=encode($gb_reply); <br/>for ($i=0;$i＜$n;$i++) &#123;//进入循环 <br/>if(eregi($ttime,$list&#91;$i&#93;))&#123;//将送来发留言时间$ttime与数组单元$list里内容进行字串匹配比较 <br/><br/>$f=explode(&quot;　&quot;,$list&#91;$i&#93;);//如果找到匹配，就以&quot;　&quot;作为分隔符,切开留言信息$list&#91;$i&#93;(第$i条留言),并将这些数据赋予数组$f <br/>$f&#91;9&#93;=$gb_reply;//将$f&#91;9&#93;（留言信息最后一条数据）用$gb_reply（回复内容）代替。 <br/>$list&#91;$i&#93;=$f&#91;0&#93;.&quot;　&quot;.$f&#91;1&#93;.&quot;　&quot;.$f&#91;2&#93;.&quot;　&quot;.$f&#91;3&#93;.&quot;　&quot;.$f&#91;4&#93;.&quot;　&quot;.$f&#91;5&#93;.&quot;　&quot;.$f&#91;6&#93;.&quot;　&quot;.$f&#91;7&#93;.&quot;　&quot;.$f&#91;8&#93;.&quot;　&quot;.$f&#91;9&#93;.&quot;&#92;n&quot;; //将数组单元$list&#91;$i&#93;的内容用数组$f加上分隔符&quot;　&quot;代替（其中$f&#91;9&#93;是修改了的新数据）。 <br/>break;//跳出循环 <br/>&#125; <br/>&#125;//循环结束符 <br/>&#125; <br/>FOR($i=0;$i＜=$n;$i++)&#123;//进入循环 <br/>fwrite($fp,$list&#91;$i&#93;);//将数组$list的每个单元为一行，写入文件gb.dat <br/>&#125;//循环结束符 <br/>fclose($fp);//关闭文件 <br/>showmessage(&quot;回复成功!&quot;,&quot;index.php&quot;);//回复成功，自动返回主界面。 <br/><br/></div><br/><br/>4、数据删除程序段 <br/><br/><div class="code"><br/><br/>$list=file(&quot;gb.dat&quot;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list&#91;0&#93;是第一条留言的数据、$list&#91;1&#93;是第一条留言的数据..... <br/>$n=count($list);//计算$list内容里的留言总数,并赋予变量$n <br/>if ($n＞0)&#123;//如果留言数大于0 <br/>$fp=fopen(&quot;gb.dat&quot;,&quot;w&quot;);//则以只写模式打开文件gb.dat <br/>for ($i=0;$i＜$n;$i++) &#123;//进入循环 <br/>if(eregi($ttime,$list&#91;$i&#93;))&#123;//将发送过来发留言时间$ttime与数组$list&#91;$i&#93;里的字串进行匹配比较 <br/>$list&#91;$i&#93;=&quot;&quot;;//如果匹配成功，则将$list&#91;$i&#93;清空（达到删除的目的） <br/>break;//跳出循环 <br/>&#125; <br/>&#125;//循环结束符 <br/>FOR($i=0;$i＜=$n;$i++)&#123;//进入循环 <br/>fwrite($fp,$list&#91;$i&#93;);//将数组$list的每个单元为一行，写入文件gb.dat <br/>&#125; //循环结束符 <br/>fclose($fp);//关闭文件 <br/>showmessage(&quot;删除成功!&quot;,&quot;index.php&quot;);//删除成功，自动返回主界面。 <br/>&#125; <br/><br/></div><br/><br/>5、数据查询程序段 <br/><br/><div class="code"><br/><br/>＜form action=&quot;search.php&quot; method=&quot;post&quot;＞ <br/>＜font color=&quot;#0099CC&quot; size=&quot;2&quot;＞搜索关键字： <br/>＜input name=&quot;found&quot; type=&quot;text&quot; id=&quot;found&quot; style=&quot;background-color:#FFFFFF; color:#8888AA; border: 1 double #3399CC&quot; size=&quot;12&quot;＞ <br/>＜input name=&quot;submit&quot; type=&quot;image&quot; src=&quot;image/search.gif&quot; alt=&quot;留言搜索&quot;＞ <br/>＜/font＞＜/td＞<br/><br/><br/>　　＜/tr＞ <br/>＜/table＞ <br/>＜/form＞ <br/>////////////////////////////////上面是搜索表单语句段 <br/>＜? <br/>$id=0; <br/><br/>$list=file(&quot;gb.dat&quot;);//读取整个gb.dat文件到数组$list,数组每一个元素为一条留言($list&#91;0&#93;是第一条留言的数据、$list&#91;1&#93;是第一条留言的数据..... <br/>$n=count($list);//计算$list内容里的留言总数,并赋予变量$n <br/>$found=trim($found); <br/>if (!$found)&#123; //如果$found为假 <br/>echo &quot;＜center＞您没有输入任何关键字！＜/center＞&quot;;//作相关显示 <br/>&#125; <br/>else &#123; <br/>if($n＞0)&#123;//如果留言数大于0 <br/>for ($i=0;$i＜$n;$i++) &#123;//进入循环 <br/>if(eregi($found,$list&#91;$i&#93;))&#123;//输入的关键字与数组$list&#91;$i&#93;里的字串进行匹配比较 <br/>$row=explode(&quot;　&quot;,$list&#91;$i&#93;); $id=1; //如果找到匹配，就以&quot;　&quot;作为分隔符,切开留言信息$list&#91;$i&#93;(第$i条留言),并将这些数据赋予数组$row.并将变量$id赋予1，以便作为是否找到匹配的判断。 <br/>list($ip,$datetime,$name,$email,$home,$face,$qq,$head,$text,$reply)=$row;//将数组$row里的单元数据按顺序赋予括号里的变量 <br/>?＞ <br/>＜img src=＜? echo $head ?＞ ＞//显示客户形象图片 <br/><br/><br/>＜font color=&quot;#0099CC&quot;＞昵称【＜? echo $name ?＞＜font size=&quot;2&quot;＞】<br/>//显示客户名 <br/>发表于：＜? echo $datetime ?＞//显示留言发表时间 <br/><br/><br/>＜img src=＜? echo $face ?＞＞//显示客户留言表情图片 <br/>＜? echo $name ?＞说:＜? echo $text; ?＞//显示客户留言内容 <br/><br/><br/>＜? echo $reply ?＞//显示回复内容 <br/><br/><br/>＜a href=&quot;＜? echo $home ?＞&quot; target=&quot;_blank&quot;＞访问＜? echo $name ?＞的主页＜/a＞//客户主页的超连接 <br/>＜a href=&quot;mailto:＜? echo $email ?＞&quot;＞给＜? echo $name ?＞发信＜/a＞//客户E-MAIL的连接 <br/>＜? echo $name ?＞的QQ号码是＜? echo $qq ?＞//显示客户的QQ号码 <br/>＜? echo $name ?＞的IP地址为＜? echo $ip ?＞&quot; //显示客户的IP地址 <br/>＜a href=&quot;reply.php?time=＜? echo $datetime ?＞&quot;＞回复＜/a＞//留言回复的连接语句 <br/>＜a href=&quot;del.php?time=＜? echo $datetime ?＞&quot;＞删除＜/a＞//留言删除的语句（以客户留言时间$datetime作为删除标识） <br/><br/><br/>＜? <br/>&#125; <br/>&#125;//循环结束符 <br/>&#125;&#125; <br/>if($id==0)&#123; echo &quot;＜center＞没有找到与关键字匹配的留言！＜/center＞&quot;;&#125;//如果$id＝0则表示没找到匹配，显示相关提示 <br/>?＞<br/><br/></div><br/><br/><br/>
]]>
</description>
</item><item>
<link>http://www.dzhope.com/post//#blogcomment</link>
<title><![CDATA[[评论] PHP对文本数据库的基本操作方法(留言簿范例)]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.dzhope.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>