分类: 电脑/网络 程序设计 其他编程语言
成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、成都网站制作、六盘水网络推广、小程序开发、六盘水网络营销、六盘水企业策划、六盘水品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供六盘水建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com
问题描述:
1.什么是:“文本数据库”
2.与access有什么区别?
有什么联系?
详细解释一下么
解析:
ctb论坛就采用了
php+txt架构
一、CTB的历史
ctb是16hot在01年底牵头,由我和win参与,将整个结构搭建了起来。结构是16和win设计,02年底我实现了大部分功能,后来Felixsun和ccxx加入,并由ccxx实现了更多的功能。在03年初的时候,整个论坛是比较成型了。
具体来说,ctb应该在04年初基本停顿了,一直没有什么新的比较大的改动。
从03年以来我就没有负责过,都是以jivi为首的爱好者在维护吧。
我也有3年左右没有来过这里了,也对不住ctb的忠实的用户和爱好者。在此向大家道歉了!真诚的道歉,因为虽然很少来这里,但还是觉得这里是自己的家。
二、说一下我吧
写ctb基本都是在上大学的时候,03年毕业后,可以说对ctb没有进行过改动和维护。首先是工作比较忙,没有了更多的业余时间;其次是写ctb的文本代码编写,就象旅行说的一样,太让人抓狂了,不象sql程序那样,不象桌面程序那样行云流水。
毕业后,和16商量过,计划开发mysql的论坛,也由于种种原因没有实施计划。可能是比较懒的缘故吧。自从php5出来后,我对sqlite是比较看好的,认为sqlite的出现基本结束了php的文本程序的历史。也写了一段sqlite的php论坛,而且基本功能也成型了,但由于国内sqlite的空间没有成规模和自己比较懒的缘故吧,这个论坛一直没有对外发布过。
过年的时候,和雪人计划合作开发c#的论坛,已经编写了雏形代码,后来由于他去了discuz工作,而搁浅。我想不久,discuz在雪人的努力下应该发布discuz的c#版本吧。
原来都是凭着兴趣,和 *** 在写程序,没有考虑过任何商业运做。把写代码当成一种享受,就象在网吧玩游戏的孩子对游戏的乐趣一样。没有过多考虑过商业化的东西。如果开始我和16就比较考虑商业化的东西,ctb也应该成为国内最大、最著名的论坛了,呵呵。
现在主要从事工作是c++底层代码的编写,以及php业务系统的设计,还有就是c#桌面程序的实现。其他的工作中就用不到了,有兴趣的朋友可以来wangyzh@dns联系我。
三、一些将来的设想
开始的时候是凭 *** ,平兴趣去写代码,ctb也可以算国内代码质量比较好的程序了,但后来随着接触各种程序的加多,发现自己存在各种不足,无论是结构设计还是具体代码优化。不敢说,国内大部分论坛程序的代码都很差吧,但至少从结构设计上,基本是没有比较漂亮的。不要提效率如何如何好,呵呵,现在的服务器,运行各种论坛程序基本效率是差不多的,除非你的程序写的极差,有各种安全漏洞。越到后来自己越想把代码结构和具体编写完美实现,但越来越发现自己的不足,需要学习,需要改进,所以一直没有彻底的开始和去完成,所以时间也拖到了现在。
从来没有停止过一种想法,那就是彻底的升级ctb或从新编写ctb,无论是sqlite或mysql数据库。还是其他的,但一直由于各种原因而没有从新彻底的开始。
今天先说这么多吧,在不久的将来,大家会看到我们的新产品的。。。
PHP文本数据库的搜索方法
searchstr=("/".preg_quote($searchstr)."/");
//$searchstr是查找的关键字
$records=file($file);//获取所有的记录数
//$file是查找的数据文件
$search_reocrds=preg_grep
($searchstr,
$records);//开始查找记录
//$search_reocrds为查找到的记录数
unset($records);
if($search_records){
//开始显示记录,写下你自己的处理程序********************
while
(list
($key,
$val)
=
each
(
$search_records))
{
echo
"$val
";
}
//****************************************************
}
先读取文本文件啊,在文本文件中搜索,如果文本较小的话可以直接用函数查找
文本:
优点:读取速度快。不需要数据库。
缺点:
检索极不方便。几乎不可能。更别提复杂的检索了。
排序不方便。
单个文本数据过大时一次读入会占用大量内存
所以不能存储大量数据
数据安全性等于0。
数据库的优点就是 文本的缺点。
我建议一下吧,文本数据库的例子本来太多,但是为了逻辑简化,最好通过专门接口实现文件与数据的转换,可以采用我下面的模板编写:
?php
//文件最前面定义两个全局变量,数据库文件名和用户数组
$pwd_db_file='db.txt';
$UserPassword=array();
//下面的pwd_db_read函数,把文件内容读入到全局数组中
function pwd_db_read(){
global $pwd_db_file, $UserPassword;
$fp=fopen($pwd_db_file,'r');
while ($s=fgets($fp)){
list($usr,$pwd)=explode('|', $s);
$UserPassword[$usr]=$pwd;
}
fclose($fp);
}
//下面的pwd_db_write函数保存数组内容到文件中
function pwd_db_write(){
global $pwd_db_file, $UserPassword;
fp=fopen($pwd_db_file, 'w');
foreach ($UserPassword as $usr=$pwd)
fputs($fp,"$usr|$pwd\n");
fclose($fp);
}
//有了上面的全局变量和函数,要写什么功能都简单
//下面假释本脚本调用的时候通过reg.php?job=adduser=...pass=...
//的格式进行调用,job为add表示添加用户,del表示删除,modi表示修改
//另外的user和pass表示用户名或者密码,job不是以上内容表示登录
//主程序一开始就打开数据库
pwd_db_read();
//下面判断功能
if ($jon=='add'){
if (array_key_exists($user,$UserPassword)) echo "用户 $user 已经存在!"
else $UserPassword[$user]=$pass;//就一句话,简单吧
}elseif (job=='del'){
unset($UserPassword[$user]);//你自己考虑编写是否确认删除的内容
}elseif ($job=='modi'){
if (array_key_exists($user,$UserPassword)) $UserPassword[$user]=$pass;//和添加是不是有点类似
else echo "用户 $user 不存在!"
}else{
if ($UserPassword[$user]==$pass){
echo '密码正确。';
//接下来可能要做许多事情
}else echo '密码错误!';
}
//程序最后保存数据库修改
pwd_db_write();
?
看得懂吗,没有上机调试,语法问题可能难免,如果发现不明白的问题请补充。
给你举个很简单的例子,如下:
form method="post"
input type="text" name="user" /
input type="text" name="pass" /
input type="submit" name="Submit" value="提交" /
/form
?php
/*写入*/
if ($_POST[Submit]) {
$fp=fopen("db.txt","a");
fwrite($fp,$_POST[user]."|".$_POST[pass]."\r\n"); //写入数据,中间用|隔开
fclose($fp);
}
/*读取,可以通过|拆分项*/
$lines=file("db.txt");
print_r("pre");
print_r($files);
/*删除*/
你可以用一项来做标识,比如提交时间,来定位行数。
?