php无数据库在线阅读资料库怎么建?

我想建一个资料库,可以在线阅读.要求:
1、所以资料不使用mysql数据库保存,能过txt或其他格式存放在空间;
2、资料内容可以查找检索;
3、分类排版清晰明了;
4、有在线输入提交资料方式,必须有安全验证。

怕无人回答,所以只填了10分。
如果有人能给出好的方案,最好直接给出源码,且可用的,另送200分。谢谢!
1、所有资料不使用mysql数据库保存,而是通过txt或其他格式(不知道access的mdb数据库是不是要空间支持)存放在空间;

我曾做过这样的尝试,优点是完全不需数据库,这样可以摆脱数据库的限制,缺点是实现太过困难,事倍功半,而且效率低下得实在可怕,最后放弃了。
可以和你说说我的思路。
第一种思路,利用文本数据库。
例如txtsql、txtDB API、txtdb,这三个完全就是TXT文件组成的数据库,可以替代部分数据库的功能,速度也勉强。
按你的情况来看,这是最优选择。
第二种是我曾经尝试的思路,基本就是利用scandir这个函数。
既然没有数据库,自己得分类细致。
1,可以建立: 分类->作者->小说->小说文件,这个结构。
例如,book/武侠小说/金庸/射雕英雄传.txt
2,index.php 遍历book下所有文件夹。从而得到 武侠小说,言情小说 等等几个分类文件夹,
生成数组$type=array(1=>"武侠小说",2=>"言情小说"),
初始化处理,数组转换成字符串,存档在book/type_data.php内.
然后,生成<href="type.php?typid=1">武侠小说</a>的链接。
3 type.php 读取book/type_data.php内的数组$type,获得文件夹:book/武侠小说/ scandir扫描,得到作者文件夹数目,生成数组字符串
$author[1]=array(1=>"金庸")
写入 book/author_data.php
,具体同2。
4,读取 book/author_data.php,得到金庸文件夹下的TXT文件数目,生成数组,转换字符串写入,book/book_data.php,具体同2。
最后获得射雕英雄传.txt,具体读取分页之类就不必细说了。
这个思路的弊端是,作者和小说数据是完全读取的,几百几千都不碍事,再多就急剧消耗内存。
还有一个思路是,数据存档文件用txt文件存放,每一条数据等长多少字节,不满的用空格填充,读取时利用文件指针判断,这样内存消耗的问题可以得到显著解决,同时也可以利用ID读取文件,缺点是需要一个具体的类进行数据操作,这基本也是文本数据库的思路了。

搜索实现比较麻烦,有两个办法,递归搜索,速度慢,消耗资源太大。
二是分类搜索,例如要搜索武分类1=>武侠小说下的金庸的小说。
那么,直接读取type_data里的分类数组,得到book/武侠小说/。
利用file_exists book/武侠小说/金庸,获得是否有这个文件夹,有的话,读取该文件夹下的book_data.php,得到小说具体数据。
至于是小说名字的话,搜索就比较慢了,遍历武侠小说下的所有作者下的book_data.php,再一一判断。

数据小的话,没问题,超过5000本书,建议一定要用数据库。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-11-04
可以采用php+txt方式来建立整个文章系统 但是效率不会很高 规模也不能大

代码太多需要发送文件
看你自己需要了
第2个回答  2009-11-04
其实,不用数据库,我感觉完全是在自虐... ...
第3个回答  2009-11-04
如果 查询 更新 等管理操作的逻辑不是很复杂,并且不是特别频繁;数据量不是很大,那可以用xml来组织...(但是这种方式比较适合小并发量的系统)
第4个回答  2009-11-04
建议数据内容不要用文本文件保存,你不用mysql,大概是不想另外买数据库吧,国内的很多服务商的mssql,mysql数据库都是另外收费,不像国外php主机,空间和数据库是共享的。不过国内的access这种小型的数据库一般是不用另外收费的,和空间一起,具体你可以询问你的空间服务商!
第5个回答  2009-11-05
<?php
//读 注意,你读的文件不能为空,否则出错
$fr = fopen("data.txt", "r");
$_读出的字符串 = fread($fr,filesize("data.txt"));
fclose($fr);
//写
$fw = fopen("data.txt", "w+");
fwrite($fw, $_你要写的字符串);
fclose($fw);
?>
在文本里你可以用个特殊的符号如“==||==”这样把标题,和内容分开,或其他单独的内容。在读取txt后,是个字符串,然后用
$newdata=explode("==||==","读取出来的字符串");
这样你echo $newdata[0];就是标题。
echo $newdata[1];就是内容。

你可以在空间建立个专门放txt的文件夹。搜索我还不知道有什么好办法。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网