用文件做数据库(php留言板)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用文本文档做数据库,实现php留言板的制作(转)

写一个php留言板的程序,大都难不倒大家,但是以前听别人说可以用.txt文件做数据库,今天就像用下.txt文件做数据库,制作一个简单的留言板,一是提高自己对fopen()、file()、fwrite()等函数的掌握的程度,二是看看以后能不能真的用.txt文件做数据库做几个小项目。

在写代码前我们需要明确一点,关系型数据库比如mysql、sqlserver等数据库与txt文档存储数据的优缺点。之所以称为关系型数据库是因为每个每个表与表,字段与字段之间是存在关系的,我们可以利用这样的关系实现数据的存储与查询,而我们只需要插入几行数据,数据的大小真的是微不足道,但是还必须写在一个地方,那么我建议你使用文本文档作为你存储的载体,因为如果存储的数据不大,存储在文本文档读取速度会比数据库快的多,而且还省去了很多没必要的花费,而文本文件做数据存储的缺点在于,当数据多了,那么查询速度就会慢了。所以,我们要根据我们的项目的不同,选择合适的数据载体。好了,我们进入正题,用文本文档做数据库,写php留言板。

先写出留言板的框架:(guestBook.html)

Guest Book

Guest Book

  • Title:
  • Comments:

form表单提交到savacomment.php文件中,那么我们就来分析下,这个文件内的代码。

foreach($_POST as $_k =>$v){${$_k} =$v;}

$data =$title.’-’.$comments;

//if(!file_exists(data.txt))fopen(data.text,”W+”);

if(!$hand=@fopen(“data.txt”,”a”)){

echo ‘写入文件打开失败!’;

exit();}

if(!fwrite($hand,$data.”\r\n”)){

echo “内容插入失败!”;

exit();}

header(“LOCATION:comment.php”)

?>

分析:

foreach($_POST as $_k =>$v){${$_k} =$v;} 这句代码我是以前看dedecms 源代码的时候看到的,我们如果要调用form表单传过来的数据,比如调用title 的值一般是 $_POST['title']这样的,如果用了上面的这段代码,我们就可以直接$title了,这样就简单了很多。

然后我们就把传过来的 title和comment合并成一个变量,这样方便插入的txt 文件中去。为什么我有一段注释的代码呢?因为我当时想如果这个文档不存在怎么办,那么我们就要去创建,而创建的函数和读取的函数是一样的,都是fopen,如果这个文件不存在而你又在读取,那么它会自动创建的,所以上面那句是多余的,可以注释掉。

fopen返回的是一个文件的指针,把这个指针传给fwrite就能向txt文件中写入了。在这里遇到了一个问题,那就是怎么让每条数据分行显示呢?我用的是‘\n’,但是发现不行,还是一行显示,在网上查询了下,原来在window下,向文本文档插入换行符要使用\r\n,而在linux下\n才起作用。因为我使用的是window下搭建的LAMP环境,所以就要用\r\n了。

这样就完成了把每条数据按照行的格式插入到文本文档里面了,格式如下:

this is a tiltle-this a comments

this is a tiltleddd-this a commentsdd

标题和comment 之间用“-”隔开,方便以后数据的分离。

下面要做的任务就是显示评论了,在这里我用了header()函数,把数据的显示交给另一个文件来处理,源代码如下:

Guest Book

$comm=array();

$comments=file(‘data.txt’);

foreach($comments as $key=>$val){

if(!empty($val)){

$comm[]=explode(‘-’,$val);

}

}

//var_dump($comm);

?>

foreach($comm as $key=>$comment)

{echo “

Title:”.$comment['0'].”
Comment:”.$comment[1].”
”;}

?>

在这里有一个很重要的函数,那就是file()函数,他的作用是把文本文档里面的每行,放到一个数组中,数组中的每一项对应每行记录。虽然把数据弄到了,但是不是我们想要的格式呀,因为现在title和comment在一块呢,在这里我们就用explode把其分类开来,并把数据存储在一个二维数组中,数组格式如下:

相关文档
最新文档