我想用文本文件来保存数据。因为没有数据库。如何做的。给个例子???有没有资料给点??

CPerlAsm_Lx 2003-10-17 02:15:57
我想用文本文件来保存数据。因为没有数据库。如何做的。给个例子???有没有资料给点??
...全文
59 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianhaozan 2003-10-24
  • 打赏
  • 举报
回复
up
chqiang 2003-10-24
  • 打赏
  • 举报
回复
feel8(准备早起的鸟) 帖的类太经典了。
收藏 学习
deadcat 2003-10-23
  • 打赏
  • 举报
回复
mark
学习
tbtnet 2003-10-23
  • 打赏
  • 举报
回复
不用申明变量,直接赋值。
CPerlAsm_Lx 2003-10-20
  • 打赏
  • 举报
回复
补充以下,我的意思是,php里怎么不声明变量,就可以用了呢。是吗?
CPerlAsm_Lx 2003-10-20
  • 打赏
  • 举报
回复
谢谢各位。学PHP才几天,请问, $fp=fopen("data/counter.txt","r"); 里fp不要声明就可以用了吗?
killme2008 2003-10-20
  • 打赏
  • 举报
回复
php是弱类型变量,你给它赋值,会自动辨别
killme2008 2003-10-19
  • 打赏
  • 举报
回复
我这有个完整例子,看看吧
//order.html
<html>
<head>
<title>Bob's Auto Parts</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Form</h2>

<form action="processorder.php" method=post>
<table border=0>
<tr bgcolor=#cccccc>
<td width=150>Item</td>
<td width=15>Quantity</td>
</tr>
<tr>
<td>Tyres</td>
<td align=center><input type="text" name="tyreqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Oil</td>
<td align=center><input type="text" name="oilqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Spark Plugs</td>
<td align=center><input type="text" name="sparkqty" size=3 maxlength=3></td>
</tr>
<tr>
<td>Address</td>
<td align=center><input type="text" name="address" size=3 maxlength=13></td>
<tr>
<td colspan=2 align=center><input type=submit value="Submit Order"></td>
</tr>
</table>
</form>

</body>
</html>
把输入的数据保存在C:/Apache/Apache2/htdocs/orders.txt
//processorder.php
<html>
<head>
<title>Bob's Auto Parts - Order Results</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Order Results</h2>
<?

define("TYREPRICE", 100);
define("OILPRICE", 10);
define("SPARKPRICE", 4);

$date = date("H:i, jS F");

echo "<p>Order processed at ";
echo $date;
$outputstring = $date."\t".$_POST["tyreqty"]." tyres \t".$_POST["oilqty"]." oil\t".$_POST["sparkqty"]." sparkplugs\t\$"."\t". $address."\n";

// open file for appending
@ $fp = fopen("C:/Apache/Apache2/htdocs/orders.txt", "a");

flock($fp, 2);

if (!$fp)
{
echo "<p><strong> Your order could not be processed at this time. "
."Please try again later.</strong></p></body></html>";
exit;
}

fwrite($fp, $outputstring);
flock($fp, 3);
fclose($fp);

echo "<p>Order written.</p>";

?>
</body>
</html>
查看所保存的数据可以用下面的:
//vieworders.php

<html>
<head>
<title>Bob's Auto Parts - Customer Orders</title>
</head>
<body>
<h1>Bob's Auto Parts</h1>
<h2>Customer Orders</h2>
<?

$fp = fopen("C:/Apache/Apache2/htdocs/ders.txt", "r");

flock($fp, 1);

if (!$fp)
{
echo "<p><strong>No orders pending."
."Please try again later.</strong></p></body></html>";
exit;

}

while (!feof($fp))
{
$order= fgets($fp, 100);
echo $order."<br>";
}
flock($fp, 3);
echo "Final position of the file pointer is ".(ftell($fp));
echo "<br>";
rewind($fp);
echo "After rewind, the position is ".(ftell($fp));
echo "<br>";
fclose($fp);
?>
</body>
</html>





tbtnet 2003-10-18
  • 打赏
  • 举报
回复
<?php
if(!file_exists("data/counter.txt")){
$fp=fopen("data/counter.txt","w");
fwrite($fp,"1");
fclose($fp);
}
else{
$fp=fopen("data/counter.txt","r");
$counter=fread($fp,6);
$counter++;
fclose($fp);
}
$fp=fopen("data/counter.txt","w");
fwrite($fp,$counter);
fclose($fp);
?>


这个简单,一个小小的计数器。是用文本文件来保存数据的。
feel8 2003-10-18
  • 打赏
  • 举报
回复
xuzuning(唠叨) 写的吧,偶转贴:)

http://www.dev-club.com/club/bbs/showEssence.asp?id=18267
soyota 2003-10-18
  • 打赏
  • 举报
回复
楼上的楼上,代码真长...
是你自己写的呀?真厉害!
blueoxygen 2003-10-18
  • 打赏
  • 举报
回复
看看CTB论坛的文本操作类
feel8 2003-10-17
  • 打赏
  • 举报
回复
自己动手做一个SQL解释器
在一些小型的应用中,完全没有必要使用大型数据库软件。自己做一个SQL解释器就能用数据库的方式来管理了。
这个解释器,能解释常用的SQL命令。你可以自行添加其他功能。

<?php
class DB_text {
var $conn;
var $classname = "db_text";
var $database;
function on_create() {
}
function connect($database_name) {
$this->database = $database_name;
if(! file_exists($database_name)) {
$this->conn = array();
$this->_close();
}
$fp = fopen($this->database,"r");
$this->conn = unserialize(fread($fp,filesize($this->database)));
fclose($fp);
}
function &query($query) {
if(eregi("select ",$query)) return $this->_select($query);
if(eregi("insert ",$query)) return $this->_insert($query);
if(eregi("delete ",$query)) return $this->_delete($query);
if(eregi("update ",$query)) return $this->_update($query);
return array();
}
function fetch_row(&$result) {
if(list($key,$value) = each($result))
return $value;
return false;
}
function num_rows($result) {
return count($result);
}

/**
* query的辅助函数
*/
function _select($query) {
if(eregi("(order by (.+))",$query,$regs)) {
$order = $regs[2];
$query = eregi_replace($regs[1],"",$query);
}
if(eregi("(group by (.+))",$query,$regs)) {
$group = $regs[2];
$query = eregi_replace($regs[1],"",$query);
}
eregi("select .* from ([0-9a-z_]+) *(where +(.+))?",$query,$regs);
if($regs[3] != "") {
$keys = $this->_where($regs[3],"\$this->conn[$regs[1]]");
while(list($key,$value) = each($keys)) {
$rs[] = $this->conn[$regs[1]][$value];
}
}else {
$rs = $this->conn[$regs[1]];
}
if($order) {
sscanf($order,"%s %s",$key,$type);
if(empty($type)) $type = "asc";
$this->_sort($rs,$key,$type);
}
return $rs;
}
function _insert($query) {
eregi("insert +into +([0-9a-z_]+) *(.+) *values? *(.+)",$query,$regs);
eval("\$key=array$regs[2];");
eval("\$value=array$regs[3];");
for($i=0;$i<count($key);$i++)
$rs[$key[$i]] = $value[$i];
$this->conn[$regs[1]][] = $rs;
$this->_close();
}
function _update($query) {
eregi("update +([0-9a-z_]+) +set *(,?.*=.*)+( +where +(.+))",$query,$regs);
$regs[2] = eregi_replace(",","=",$regs[2]);
$v = split("=",$regs[2]);
$keys = $this->_where($regs[4],"\$this->conn[$regs[1]]");
while(list($key,$value) = each($keys)) {
for($i=0;$i<count($v);$i+=2)
$this->conn[$regs[1]][$value][$v[$i]] = eregi_replace("'","",$v[$i+1]);
}
$this->_close();
}
function _delete($query) {
eregi("delete +from +([0-9a-z_]+) *(where +(.+))?",$query,$regs);
$keys = $this->_where($regs[3],"\$this->conn[$regs[1]]");
while(list($key,$value) = each($keys)) {
unset($this->conn[$regs[1]][$value]);
}
reset($this->conn[$regs[1]]);
while(list($key,$value) = each($this->conn[$regs[1]])) {
$ch[] = $value;
}
$this->conn[$regs[1]] = $ch;
$this->_close();
}
function _where($search,$table) {
$search = eregi_replace("\("," ( ",$search);
$search = eregi_replace("\)"," ) ",$search);
$search = eregi_replace("\+"," + ",$search);
$search = eregi_replace("\*"," * ",$search);
while(eregi("[^ ]([*/><!=-])",$search,$regs)) {
$search = eregi_replace($regs[1]," $regs[1] ",$search);
}
while(eregi("([><!] +=)",$search,$regs)) {
$search = eregi_replace($regs[1],eregi_replace(" ","",$regs[1]),$search);
}
$search = eregi_replace(" "," ",trim($search));
$search = eregi_replace(" and "," && ",$search);
$search = eregi_replace(" or "," || ",$search);
$search = eregi_replace(" = "," == ",$search);
$ar = split(" ",$search);
eval("\$t=$table;");

for($i=0;$i<count($ar);$i++) {
if(isset($t[0][$ar[$i]]))
$ar[$i] = "\$value[".$ar][$i]."]";
}
$expr = "\$expl=(".join(" ",$ar).");";

while(list($key,$value) = each($t)) {
eval($expr);
if($expl)
$keys[] = $key;
}
return $keys;
}
function _sort(&$ar,$key=0,$mode="desc") {
global $cmp_key;
$cmp_key = $key;
if($mode == "asc")
usort($ar,_cmp_asc);
else
usort($ar,_cmp_desc);
}
function _close() {
$fp = fopen($this->database,"w");
fwrite($fp,serialize($this->conn));
fclose($fp);
}
}

/** 排序键
*/
$cmp_key = "";

/** 排序用工作函数(降序 由usort()调用)
*/
function _cmp_desc($a,$b) {
global $cmp_key;
if ($a[$cmp_key] == $b[$cmp_key]) return 0;
return ($a[$cmp_key] > $b[$cmp_key]) ? -1 : 1;
}

/** 排序用工作函数(升序 由usort()调用)
*/
function _cmp_asc($a,$b) {
global $cmp_key;
if ($a[$cmp_key] == $b[$cmp_key]) return 0;
return ($a[$cmp_key] > $b[$cmp_key]) ? 1 : -1;
}
?>

测试例:
<pre>
<?php
//require_once "db_text.php";

$conn = new DB_text;
$conn->connect("text1.txt");

$conn->query("insert into manage (id,title) values (10,'abcd')");
$conn->query("insert into manage (id,title) values (2,'43d')");
$conn->query("insert into manage (id,title) values (20,'tuu')");
$conn->query("update manage set id=101,test='a' where id=10");
//$conn->query("delete from manage where id='10'");
//$conn->query("delete from manage where id=10 or table='code'");


//$rt = $conn->query("select * from manage where id=101 or table='code' group by 1 order by 1 asc");
$rt = $conn->query("select * from manage group by 1 order by id desc");

print_r($rt);

?>
</pre>

ykjsw 2003-10-17
  • 打赏
  • 举报
回复
研究一下旅行的wdb或者ctb或者华育论坛,都是文本储存的:)
CPerlAsm_Lx 2003-10-17
  • 打赏
  • 举报
回复
可以贴出来吗。访问不到
xuzuning 2003-10-17
  • 打赏
  • 举报
回复
http://www.dev-club.com/club/bbs/showEssence.asp?id=18267

21,882

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧