PHP实现对文本数据库的常用操作方法实例演示


Posted in PHP onJuly 04, 2014

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 ?>" rel="external nofollow" target="_blank">访问<? echo $name ?>的主页</a>//客户主页的超连接
<a href="mailto:<? echo $email ?>" rel="external nofollow" >给<? echo $name ?>发信</a>//客户E-MAIL的连接
<? echo $name ?>的QQ号码是<? echo $qq ?>//显示客户的QQ号码 
<? echo $name ?>的IP地址为<? echo $ip ?>" //显示客户的IP地址
<a href="reply.php?time=<? echo $datetime ?>" rel="external nofollow" >回复</a>//留言回复的连接语句 
<a href="del.php?time=<? echo $datetime ?>" rel="external nofollow" >删除</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]." "; //将数组单元$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; ?>//显示客户
PHP 相关文章推荐
PHP字符串处理的10个简单方法
Jun 30 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
Oct 16 PHP
PHP使用json_encode函数时不转义中文的解决方法
Nov 12 PHP
php计算指定目录下文件占用空间的方法
Mar 13 PHP
PHP获取一年有几周以及每周开始日期和结束日期
Aug 06 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
Laravel中基于Artisan View扩展包创建及删除应用视图文件的方法
Oct 08 PHP
WAF的正确bypass
Jan 05 PHP
thinkPHP实现的省市区三级联动功能示例
May 05 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
Feb 28 PHP
成为好程序员必须避免的5个坏习惯
Jul 04 #PHP
windows7下安装php的php-ssh2扩展教程
Jul 04 #PHP
windows7下安装php的imagick和imagemagick扩展教程
Jul 04 #PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 #PHP
php实现批量压缩图片文件大小的脚本
Jul 04 #PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 #PHP
PHP临时文件的安全性分析
Jul 04 #PHP
You might like
基于mysql的bbs设计(五)
2006/10/09 PHP
php桌面中心(一) 创建数据库
2007/03/11 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
Laravel框架Eloquent ORM修改数据操作示例
2019/12/03 PHP
设定php简写功能的方法
2019/11/28 PHP
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
JavaScript仿支付宝密码输入框
2015/12/29 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
Vue.js实现模拟微信朋友圈开发demo
2017/04/20 Javascript
JavaScript编写棋盘覆盖代码详解
2017/08/28 Javascript
jquery使用FormData实现异步上传文件
2018/10/25 jQuery
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
nodejs使用socket5进行代理请求的实现
2020/02/21 NodeJs
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
浅析Python中return和finally共同挖的坑
2017/08/18 Python
python看某个模块的版本方法
2018/10/16 Python
Python使用Selenium爬取淘宝异步加载的数据方法
2018/12/17 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
python中re模块知识点总结
2021/01/17 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
大专生毕业的自我评价
2014/02/06 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
五四青年节活动总结
2015/02/10 职场文书
院系推荐意见
2015/06/05 职场文书
培根随笔读书笔记
2015/07/01 职场文书
职工食堂管理制度
2015/08/06 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
z-index不起作用
2021/03/31 HTML / CSS
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Python提取PDF指定内容并生成新文件
2021/06/09 Python
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
Python Pandas数据分析之iloc和loc的用法详解
2021/11/11 Python