分類: 電腦/網(wǎng)絡(luò) 程序設(shè)計 其他編程語言
成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、成都網(wǎng)站制作、六盤水網(wǎng)絡(luò)推廣、小程序開發(fā)、六盤水網(wǎng)絡(luò)營銷、六盤水企業(yè)策劃、六盤水品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供六盤水建站搭建服務(wù),24小時服務(wù)熱線:18980820575,官方網(wǎng)址:www.cdcxhl.com
問題描述:
1.什么是:“文本數(shù)據(jù)庫”
2.與access有什么區(qū)別?
有什么聯(lián)系?
詳細(xì)解釋一下么
解析:
ctb論壇就采用了
php+txt架構(gòu)
一、CTB的歷史
ctb是16hot在01年底牽頭,由我和win參與,將整個結(jié)構(gòu)搭建了起來。結(jié)構(gòu)是16和win設(shè)計,02年底我實現(xiàn)了大部分功能,后來Felixsun和ccxx加入,并由ccxx實現(xiàn)了更多的功能。在03年初的時候,整個論壇是比較成型了。
具體來說,ctb應(yīng)該在04年初基本停頓了,一直沒有什么新的比較大的改動。
從03年以來我就沒有負(fù)責(zé)過,都是以jivi為首的愛好者在維護吧。
我也有3年左右沒有來過這里了,也對不住ctb的忠實的用戶和愛好者。在此向大家道歉了!真誠的道歉,因為雖然很少來這里,但還是覺得這里是自己的家。
二、說一下我吧
寫ctb基本都是在上大學(xué)的時候,03年畢業(yè)后,可以說對ctb沒有進行過改動和維護。首先是工作比較忙,沒有了更多的業(yè)余時間;其次是寫ctb的文本代碼編寫,就象旅行說的一樣,太讓人抓狂了,不象sql程序那樣,不象桌面程序那樣行云流水。
畢業(yè)后,和16商量過,計劃開發(fā)mysql的論壇,也由于種種原因沒有實施計劃??赡苁潜容^懶的緣故吧。自從php5出來后,我對sqlite是比較看好的,認(rèn)為sqlite的出現(xiàn)基本結(jié)束了php的文本程序的歷史。也寫了一段sqlite的php論壇,而且基本功能也成型了,但由于國內(nèi)sqlite的空間沒有成規(guī)模和自己比較懶的緣故吧,這個論壇一直沒有對外發(fā)布過。
過年的時候,和雪人計劃合作開發(fā)c#的論壇,已經(jīng)編寫了雛形代碼,后來由于他去了discuz工作,而擱淺。我想不久,discuz在雪人的努力下應(yīng)該發(fā)布discuz的c#版本吧。
原來都是憑著興趣,和 *** 在寫程序,沒有考慮過任何商業(yè)運做。把寫代碼當(dāng)成一種享受,就象在網(wǎng)吧玩游戲的孩子對游戲的樂趣一樣。沒有過多考慮過商業(yè)化的東西。如果開始我和16就比較考慮商業(yè)化的東西,ctb也應(yīng)該成為國內(nèi)最大、最著名的論壇了,呵呵。
現(xiàn)在主要從事工作是c++底層代碼的編寫,以及php業(yè)務(wù)系統(tǒng)的設(shè)計,還有就是c#桌面程序的實現(xiàn)。其他的工作中就用不到了,有興趣的朋友可以來wangyzh@dns聯(lián)系我。
三、一些將來的設(shè)想
開始的時候是憑 *** ,平興趣去寫代碼,ctb也可以算國內(nèi)代碼質(zhì)量比較好的程序了,但后來隨著接觸各種程序的加多,發(fā)現(xiàn)自己存在各種不足,無論是結(jié)構(gòu)設(shè)計還是具體代碼優(yōu)化。不敢說,國內(nèi)大部分論壇程序的代碼都很差吧,但至少從結(jié)構(gòu)設(shè)計上,基本是沒有比較漂亮的。不要提效率如何如何好,呵呵,現(xiàn)在的服務(wù)器,運行各種論壇程序基本效率是差不多的,除非你的程序?qū)懙臉O差,有各種安全漏洞。越到后來自己越想把代碼結(jié)構(gòu)和具體編寫完美實現(xiàn),但越來越發(fā)現(xiàn)自己的不足,需要學(xué)習(xí),需要改進,所以一直沒有徹底的開始和去完成,所以時間也拖到了現(xiàn)在。
從來沒有停止過一種想法,那就是徹底的升級ctb或從新編寫ctb,無論是sqlite或mysql數(shù)據(jù)庫。還是其他的,但一直由于各種原因而沒有從新徹底的開始。
今天先說這么多吧,在不久的將來,大家會看到我們的新產(chǎn)品的。。。
PHP文本數(shù)據(jù)庫的搜索方法
searchstr=("/".preg_quote($searchstr)."/");
//$searchstr是查找的關(guān)鍵字
$records=file($file);//獲取所有的記錄數(shù)
//$file是查找的數(shù)據(jù)文件
$search_reocrds=preg_grep
($searchstr,
$records);//開始查找記錄
//$search_reocrds為查找到的記錄數(shù)
unset($records);
if($search_records){
//開始顯示記錄,寫下你自己的處理程序********************
while
(list
($key,
$val)
=
each
(
$search_records))
{
echo
"$val
";
}
//****************************************************
}
先讀取文本文件啊,在文本文件中搜索,如果文本較小的話可以直接用函數(shù)查找
文本:
優(yōu)點:讀取速度快。不需要數(shù)據(jù)庫。
缺點:
檢索極不方便。幾乎不可能。更別提復(fù)雜的檢索了。
排序不方便。
單個文本數(shù)據(jù)過大時一次讀入會占用大量內(nèi)存
所以不能存儲大量數(shù)據(jù)
數(shù)據(jù)安全性等于0。
數(shù)據(jù)庫的優(yōu)點就是 文本的缺點。
我建議一下吧,文本數(shù)據(jù)庫的例子本來太多,但是為了邏輯簡化,最好通過專門接口實現(xiàn)文件與數(shù)據(jù)的轉(zhuǎn)換,可以采用我下面的模板編寫:
?php
//文件最前面定義兩個全局變量,數(shù)據(jù)庫文件名和用戶數(shù)組
$pwd_db_file='db.txt';
$UserPassword=array();
//下面的pwd_db_read函數(shù),把文件內(nèi)容讀入到全局?jǐn)?shù)組中
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函數(shù)保存數(shù)組內(nèi)容到文件中
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);
}
//有了上面的全局變量和函數(shù),要寫什么功能都簡單
//下面假釋本腳本調(diào)用的時候通過reg.php?job=adduser=...pass=...
//的格式進行調(diào)用,job為add表示添加用戶,del表示刪除,modi表示修改
//另外的user和pass表示用戶名或者密碼,job不是以上內(nèi)容表示登錄
//主程序一開始就打開數(shù)據(jù)庫
pwd_db_read();
//下面判斷功能
if ($jon=='add'){
if (array_key_exists($user,$UserPassword)) echo "用戶 $user 已經(jīng)存在!"
else $UserPassword[$user]=$pass;//就一句話,簡單吧
}elseif (job=='del'){
unset($UserPassword[$user]);//你自己考慮編寫是否確認(rèn)刪除的內(nèi)容
}elseif ($job=='modi'){
if (array_key_exists($user,$UserPassword)) $UserPassword[$user]=$pass;//和添加是不是有點類似
else echo "用戶 $user 不存在!"
}else{
if ($UserPassword[$user]==$pass){
echo '密碼正確。';
//接下來可能要做許多事情
}else echo '密碼錯誤!';
}
//程序最后保存數(shù)據(jù)庫修改
pwd_db_write();
?
看得懂嗎,沒有上機調(diào)試,語法問題可能難免,如果發(fā)現(xiàn)不明白的問題請補充。
給你舉個很簡單的例子,如下:
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"); //寫入數(shù)據(jù),中間用|隔開
fclose($fp);
}
/*讀取,可以通過|拆分項*/
$lines=file("db.txt");
print_r("pre");
print_r($files);
/*刪除*/
你可以用一項來做標(biāo)識,比如提交時間,來定位行數(shù)。
?