自已写的一个关于读写文本数据的小程序,主要功能如下:
1:填加商品信息
2:修改信息
3:删除信息
4:按价格高低排序
5:按填加商品的时间排序
6:分页功能(为程序更显而易见,把这个写在两个文件里,实际项目中不推荐这么写)
7:提供前能展示页面和后台管理页面
8:后台登陆HTTP验证功能(未实现,更新中)
以上所有数据均存放在record.txt文本当中。
文件描述
main.php模板引擎配置路径文件,shop.php后台管理员程序,shopmsg.html页面模板文件,show.php前台展示程序,shomsg.html前台页面模板文件,buymsg.php商品详细信息程序,buymsg.html商品详细信息页面模板文件,pg.php前台显示中使用的分页文件,pgshop.php后台管理中用到的分页文件。
实现方法
简单说一下实现方法,PHP中对文本操作,打开->操作->关闭。操作的性质就取决于你打开的方式,书上讲了很多打开方式,其实就是两种:只读和写入,只读就不多说了,从字面意思上就已经知道他的全部了。现在就简单的说一下写入。写入时书上讲了10种方式,但其实只有四种:追加,重写,二进制和用于与其他模工的结合模式。今天我们用到的只有前两种,添加新数据时用追加,这样之前所添加的数据的数据就不会被删除(fopen(“record.txt”,'a')),相关使用方法见http://www.php.net。重写,就是把原有的所有数据全部清空后再添加进新的数据,根据这个原理,我们以修改后的数组中的数据作为数据源就可对文本进行修改操作了。关于删除,PHP中我没有找到相关删除的操作,所以在此我就对数据行最后的删除标记进行操作,如果是0就是没有被删除的,如果是1就是刚刚删除掉的,之后在读入数据时判断该项是否是0就可以实现数据的删除操作,好了,程序的实现方法就简单说到这里,下面是我的源码,如有不妥之处,请在下方留言,或发Mail至zmouki@gmail.com,共同讨论。
希望这个能对更多初次接触PHP对文本操作的朋友有所帮助。
源码:
main.php
<?
php
include
"
web/libs/Smarty.class.php
"
;
define
(
"
__SITE_ROOT
"
,
"
E:/Apache2.2/htdocs/web
"
);
$tpl
=
new
Smarty();
$tpl
->
template_dir
=
__SITE_ROOT
.
"
/Smarty/templates/html/
"
;
$tpl
->
compile_dir
=
__SITE_ROOT
.
"
/Smarty/demo/templates_c/
"
;
$tpl
->
config_dir
=
__SITE_ROOT
.
"
/Smarty/demo/configs/
"
;
$tpl
->
cache_dir
=
__SITE_ROOT
.
"
/Smarty/demo/cache/
"
;
$tpl
->
left_delimiter
=
'
<{
'
;
$tpl
->
right_delimiter
=
'
}>
'
;
?>
shop.php
<?
php
header
(
"
Content-Type:text/html;charset:UTF-8
"
);
require_once
"
main.php
"
;
require_once
"
pgshop.php
"
;
/*
******************************************
HTTP验证功能
*****************************************
if (!isset($PHP_AUTH_USER) || (!isset($PHP_AUTH_PW)))
{
header("WWW-Authenticate:Basic realm='goods'");
header('HTTP/1.0 401 Unauthorized');
echo "<script language='JavaScript'>alert ('验证失败!请重新登陆。');</script>";
exit;
}
else if ((isset($PHP_AUTH_USER)) && (isset($PHP_AUTH_PW)))
{
if (($PHP_AUTH_USER != "admin") || ($PHP_AUTH_PW !="admin"))
{
header ('WWW-Authenticate: Basic realm="goods"');
header ('HTTP/1.0 401 Unauthorized');
echo "<script language='JavaScript'>alert ('Authorization Required.');</script>";
exit;
}
else if (($PHP_AUTH_USER == "admin") && ($PHP_AUTH_PW == "admin"))
{
echo "<script language='JavaScript'>alert ('验证成功!');</script>";
exit;
}
}*
*/
$GoodsName
=
$_REQUEST
[
"
GoodsName
"
];
$SalePrice
=
$_REQUEST
[
"
SalePrice
"
];
$EMS
=
$_REQUEST
[
"
EMS
"
];
$Delivery
=
$_REQUEST
[
"
Delivery
"
];
$goodsmsg
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
"
goodsmsg
"
]));
$buymsg
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
"
buymsg
"
]));
$TEL
=
$_REQUEST
[
"
TEL
"
];
$bank
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
"
bank
"
]));
/*
*************************************************************
读取当前页面地址
*************************************************************
*/
$url
=
"
http://
"
.
$_SERVER
[
"
HTTP_HOST
"
];
if
(
isset
(
$_SERVER
[
"
$page
"
]))
{
$url
.=
$_SERVER
[
"
$page
"
];
}
else
{
$url
.=
$_SERVER
[
"
PHP_SELF
"
];
if
(
!
empty
(
$_SERVER
[
"
QUERY_STRING
"
]))
{
$url
.=
"
?
"
.
$_SERVER
[
"
QUERY_STRING
"
];
}
}
$urladd
=
$url
;
$tpl
->
assign (
"
address
"
,
$urladd
);
/*
*************************************************************
读取record.txt中数据功能
*************************************************************
*/
$resourse
=
fopen
(
'
record.txt
'
,
'
r
'
);
$newarray
=
array
();
$sortp
=
array
();
$sortd
=
array
();
while
(
$content
=
fgets
(
$resourse
))
{
list
(
$date
,
$ip
,
$file_path
,
$goods
,
$price
,
$emsprice
,
$deliveryprice
)
=
explode
(
'
|
'
,
$content
);
array_push
(
$newarray
,
explode
(
'
|
'
,
$content
));
}
fclose
(
$resourse
);
for
(
$i
=
0
;
$i
<
$total
;
$i
++
)
{
//
时间
$newread
[
$i
][
'
Time
'
]
=
$newarray
[
$i
][
0
];
//
IP
$newread
[
$i
][
'
IP
'
]
=
$newarray
[
$i
][
1
];
//
地址
$newread
[
$i
][
'
Photo
'
]
=
$newarray
[
$i
][
2
];
//
商品名
$newread
[
$i
][
'
GoodsName
'
]
=
$newarray
[
$i
][
3
];
//
价格
$newread
[
$i
][
'
SalePrice
'
]
=
trim
(
$newarray
[
$i
][
4
]);
//
EMS
$newread
[
$i
][
'
EMS
'
]
=
trim
(
$newarray
[
$i
][
5
]);
//
快递
$newread
[
$i
][
'
Delivery
'
]
=
trim
(
$newarray
[
$i
][
6
]);
//
商品简介
$newread
[
$i
][
'
GoodsMsg
'
]
=
$newarray
[
$i
][
7
];
//
购买需知
$newread
[
$i
][
'
BuyMsg
'
]
=
$newarray
[
$i
][
8
];
//
联系方式
$newread
[
$i
][
'
Tel
'
]
=
$newarray
[
$i
][
9
];
//
汇款地址
$newread
[
$i
][
'
Bank
'
]
=
$newarray
[
$i
][
10
];
//
ID
$newread
[
$i
][
'
ID
'
]
=
trim
(
$newarray
[
$i
][
11
]);
//
DELFLG
$newread
[
$i
][
'
DELFLG
'
]
=
trim
(
$newarray
[
$i
][
12
]);
//
当前行数
$newread
[
$i
][
'
Line
'
]
=
$i
;
}
$useread
=
array
();
for
(
$i
=
0
;
$i
<
count
(
$newread
);
$i
++
)
{
if
(
$newread
[
$i
][
'
DELFLG
'
]
==
0
)
{
$useread
[]
=
$newread
[
$i
];
}
}
/*
*************************************************************
数据添加功能
*************************************************************
*/
if
(
count
(
$useread
)
==
0
)
{
$max
=
0
;
}
else
{
for
(
$i
=
0
;
$i
<
$usetotal
;
$i
++
)
{
for
(
$j
=
$usetotal
;
$j
>
$i
;
$j
--
)
{
if
(
$useread
[
$j
][
'
ID
'
]
>
$useread
[
$j
-
1
][
'
ID
'
])
{
$tmp
=
$useread
[
$j
];
$useread
[
$j
]
=
$useread
[
$j
-
1
];
$useread
[
$j
-
1
]
=
$tmp
;
}
}
}
}
$max
=
(
$useread
[
0
][
'
ID
'
]);
/*
*************************************************************
数据删除功能
*************************************************************
*/
if
(
$_REQUEST
[
"
isdel
"
]
==
1
)
{
$delnum
=
$_REQUEST
[
'
dele
'
];
for
(
$i
=
0
;
$i
<
count
(
$useread
);
$i
++
)
{
if
(
$useread
[
$i
][
'
ID
'
]
==
$delnum
)
{
$delline
=
$i
;
}
}
$useread
[
$delline
][
'
DELFLG
'
]
=
1
;
$resourse
=
fopen
(
'
record.txt
'
,
'
w
'
);
for
(
$i
=
0
;
$i
<
count
(
$useread
);
$i
++
)
{
fwrite
(
$resourse
,
$useread
[
$i
][
'
Time
'
]
.
"
|
"
.
$useread
[
$i
][
'
IP
'
]
.
"
|
"
.
$useread
[
$i
][
'
Photo
'
]
.
"
|
"
.
$useread
[
$i
][
'
GoodsName
'
]
.
"
|
"
.
$useread
[
$i
][
'
SalePrice
'
]
.
"
|
"
.
$useread
[
$i
][
'
EMS
'
]
.
"
|
"
.
$useread
[
$i
][
'
Delivery
'
]
.
"
|
"
.
$useread
[
$i
][
'
GoodsMsg
'
]
.
"
|
"
.
$useread
[
$i
][
'
BuyMsg
'
]
.
"
|
"
.
$useread
[
$i
][
'
Tel
'
]
.
"
|
"
.
$useread
[
$i
][
'
Bank
'
]
.
"
|
"
.
$useread
[
$i
][
'
ID
'
]
.
"
|
"
.
$useread
[
$i
][
'
DELFLG
'
]
.
"
"
);
}
fclose
(
$resourse
);
echo
"
<script language='JavaScript'>location.href='shop.php';</script>
"
;
}
/*
*************************************************************
数据排序功能
*************************************************************
*/
$sortbyprice
=
$_REQUEST
[
"
price
"
];
$sortbydate
=
$_REQUEST
[
"
date
"
];
$tpl
->
assign (
"
sortbyprice
"
,
$sortbyprice
);
$tpl
->
assign (
"
sortbydate
"
,
$sortbydate
);
if
(
$sortbyprice
==
1
)
{
for
(
$i
=
0
;
$i
<
$usetotal
;
$i
++
)
{
for
(
$j
=
$usetotal
-
1
;
$j
>
$i
;
$j
--
)
{
if
(
$useread
[
$j
][
'
SalePrice
'
]
<
$useread
[
$j
-
1
][
'
SalePrice
'
])
{
$tmp
=
$useread
[
$j
];
$useread
[
$j
]
=
$useread
[
$j
-
1
];
$useread
[
$j
-
1
]
=
$tmp
;
}
}
}
}
/*
*************************************************************
数据修改功能
*************************************************************
*/
if
(
$_REQUEST
[
"
isedit
"
]
==
1
)
{
$editnum
=
$_REQUEST
[
"
editnum
"
];
for
(
$i
=
0
;
$i
<
count
(
$useread
);
$i
++
)
{
if
(
$useread
[
$i
][
'
ID
'
]
==
$editnum
)
{
$editline
=
$i
;
//
数组中的位置
}
}
$editname
=
"
GoodsName
"
.
$editnum
;
$editprice
=
"
SalePrice
"
.
$editnum
;
$editEMS
=
"
EMS
"
.
$editnum
;
$editDelivery
=
"
Delivery
"
.
$editnum
;
$editGoodsMsg
=
"
GoodsMsg
"
.
$editnum
;
$editBuyMsg
=
"
BuyMsg
"
.
$editnum
;
$editTel
=
"
Tel
"
.
$editnum
;
$editBank
=
"
Bank
"
.
$editnum
;
$editGoodsPhoto
=
"
GoodsPhoto
"
.
$editnum
;
$updatename
=
$_REQUEST
[
$editname
];
$updateprice
=
$_REQUEST
[
$editprice
];
$updateEMS
=
$_REQUEST
[
$editEMS
];
$updateDelivery
=
$_REQUEST
[
$editDelivery
];
$updateGoodsMsg
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
$editGoodsMsg
]));
$updateBuyMsg
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
$editBuyMsg
]));
$updateTel
=
$_REQUEST
[
$editTel
];
$updateBank
=
trim
(
str_replace
(
"
"
,
""
,
$_REQUEST
[
$editBank
]));
$updatePhoto
=
$_REQUEST
[
$editGoodsPhoto
];
echo
$updatePhoto
;

$useread
[
$editline
][
'
GoodsName
'
]
=
$updatename
;
$useread
[
$editline
][
'
SalePrice
'
]
=
$updateprice
;
$useread
[
$editline
][
'
EMS
'
]
=
$updateEMS
;
$useread
[
$editline
][
'
Delivery
'
]
=
$updateDelivery
;
$useread
[
$editline
][
'
GoodsMsg
'
]
=
$updateGoodsMsg
;
$useread
[
$editline
][
'
BuyMsg
'
]
=
$updateBuyMsg
;
$useread
[
$editline
][
'
Tel
'
]
=
$updateTel
;
$useread
[
$editline
][
'
Bank
'
]
=
$updateBank
;
/*
*************************************************************
图片修改功能
*************************************************************
*/
$newMAX_SIZE
=
"
500000
"
;
$newFILE_MIMES
=
array
(
'
image/jpeg
'
,
'
image/jpg
'
,
'
image/gif
'
,
'
image/png
'
,
'
image/pjpeg
'
,
'
application/msword
'
);
$newFILE_POSTFIX
=
array
(
'
.zip
'
,
'
.jpg
'
,
'
.gif
'
,
'
bmp
'
);
$newDELETE_ENABLE
=
'
no
'
;
$newsite_name
=
$_SERVER
[
'
HTTP_HOST
'
];
$newsite_url
=
"
http://
"
.
$newsite_name
.
dirname
(
$_SERVER
[
'
PHP_SELF
'
]);
$newsite_this
=
"
http://
"
.
$newsite_name
.
$_SERVER
[
'
PHP_SELF
'
];
$newvisibility
=
true
;
if
(
$newvisibility
)
{
$newupload_dir
=
"
images/upload/public/
"
;
}
else
{
$newupload_dir
=
"
images/upload/private/
"
;
}
$newupload_url
=
$newsite_url
.
"
/
"
.
$newupload_dir
;
if
(
!
is_dir
(
$newupload_dir
))
{
if
(
!
mkdir
(
$newupload_dir
))
die
(
'
文件没有创建成功!
'
);
}
if
(
$_FILES
[
$editGoodsPhoto
][
'
size
'
]
<>
0
)
{
$newfile_name
=
$_FILES
[
$editGoodsPhoto
][
'
name
'
];
$newfile_type
=
$_FILES
[
$editGoodsPhoto
][
'
type
'
];
$newfile_postfix
=
substr
(
$newfile_name
,
strrpos
(
$newfile_name
,
"
.
"
));
if
(
$_FILES
[
$editGoodsPhoto
][
'
size
'
]
>=
$newMAX_SIZE
)
{
echo
"
<script language='javascript'>location.href='shop.php';alert('图片太大了,换个小点的吧!');</script>
"
;
}
elseif
(
!
in_array
(
$newfile_type
,
$newFILE_MIMES
)
&&
!
in_array
(
$newfile_postfix
,
$newFILE_POSTFIX
))
{
echo
"
<script language='javascript'>location.href='shop.php';alert('2上传文件不符合规定,请重新选择上传文件!');</script>
"
;
}
else
{
$newtemp_name
=
trim
(
$_FILES
[
$editGoodsPhoto
][
'
tmp_name
'
]);
$newfile_name
=
$_FILES
[
$editGoodsPhoto
][
'
name
'
];
$newfile_name
=
str_replace
(
"
/
"
,
""
,
$newfile_name
);
$newfile_name
=
str_replace
(
""
,
""
,
$newfile_name
);
$newfile_path
=
$newupload_dir
.
$newfile_name
;
if
(
$newfile_name
=
''
)
{
echo
"
文件名无效!
"
;
exit
;
}
if
(
$newresult
=
move_uploaded_file
(
$newtemp_name
,
$newfile_path
))
{
$useread
[
$editline
][
'
Photo
'
]
=
$newupload_dir
.
$_FILES
[
$editGoodsPhoto
][
'
name
'
];
}
else
{
echo
"
<script language='JavaScript'>alert('修改失败!');</script>
"
;
}
}
}
$resourse
=
fopen
(
'
record.txt
'
,
'
w
'
);
for
(
$i
=
0
;
$i
<
count
(
$useread
);
$i
++
)
{
fwrite
(
$resourse
,
$useread
[
$i
][
'
Time
'
]
.
"
|
"
.
$useread
[
$i
][
'
IP
'
]
.
"
|
"
.
$useread
[
$i
][
'
Photo
'
]
.
"
|
"
.
$useread
[
$i
][
'
GoodsName
'
]
.
"
|
"
.
$useread
[
$i
][
'
SalePrice
'
]
.
"
|
"
.
$useread
[
$i
][
'
EMS
'
]
.
"
|
"
.
$useread
[
$i
][
'
Delivery
'
]
.
"
|
"
.
$useread
[
$i
][
'
GoodsMsg
'
]
.
"
|
"
.
$useread
[
$i
][
'
BuyMsg
'
]
.
"
|
"
.
$useread
[
$i
][
'
Tel
'
]
.
"
|
"
.
$useread
[
$i
][
'
Bank
'
]
.
"
|
"
.
$useread
[
$i
][
'
ID
'
]
.
"
|
"
.
$useread
[
$i
][
'
DELFLG
'
]
.
"
"
);
}
fclose
(
$resourse
);
echo
"
<script type='text/JavaScript' language='JavaScript'>location.href='shop.php';alert('修改成功!');</script>
"
;
}
/*
*************************************************************
数据分页功能
*************************************************************
*/
$newreads
=
array
();
$maxnum
=
$offset
+
$num
;
if
(
$maxnum
>
$usetotal
)
{
$maxnum
=
$usetotal
;
}
for
(
$i
=
$offset
;
$i
<
(
$maxnum
);
$i
++
)
{
$newreads
[]
=
$useread
[
$i
];
}
/*
*************************************************************
图片上传,数据添加功能
upload_url---->存放上传文件的网络地址
upload_dir---->存放上传文件目录
*************************************************************
*/
$MAX_SIZE
=
"
500000
"
;
$FILE_MIMES
=
array
(
'
image/jpeg
'
,
'
image/jpg
'
,
'
image/gif
'
,
'
image/png
'
,
'
image/pjpeg
'
,
'
application/msword
'
);
$FILE_POSTFIX
=
array
(
'
.zip
'
,
'
.jpg
'
,
'
.gif
'
,
'
bmp
'
);
$DELETE_ENABLE
=
'
no
'
;
$site_name
=
$_SERVER
[
'
HTTP_HOST
'
];
$site_url
=
"
http://
"
.
$site_name
.
dirname
(
$_SERVER
[
'
PHP_SELF
'
]);
$site_this
=
"
http://
"
.
$site_name
.
$_SERVER
[
'
PHP_SELF
'
];
$visibility
=
true
;
if
(
$visibility
)
{
$upload_dir
=
"
images/upload/public/
"
;
}
else
{
$upload_dir
=
"
images/upload/private/
"
;
}
$upload_url
=
$site_url
.
"
/
"
.
$upload_dir
;
if
(
!
is_dir
(
$upload_dir
))
{
if
(
!
mkdir
(
$upload_dir
))
die
(
'
文件没有创建成功!
'
);
}
if
(
$_FILES
[
'
GoodsPhoto
'
])
{
if
(
$_FILES
[
'
GoodsPhoto
'
][
'
size
'
]
==
0
)
{
echo
"
<script language='JavaScript'>location.href='shop.php';alert('必须输入项不能为空!');</script>
"
;
}
$file_name
=
$_FILES
[
'
GoodsPhoto
'
][
'
name
'
];
$file_type
=
$_FILES
[
'
GoodsPhoto
'
][
'
type
'
];
$file_postfix
=
substr
(
$file_name
,
strrpos
(
$file_name
,
"
.
"
));
if
(
$_FILES
[
'
GoodsPhoto
'
][
'
size
'
]
>=
$MAX_SIZE
)
{
echo
"
<script language='JavaScript'>location.href='shop.php';alert('图片太大了,换个小点的吧!');</script>
"
;
}
elseif
(
!
in_array
(
$file_type
,
$FILE_MIMES
)
&&
!
in_array
(
$file_postfix
,
$FILE_POSTFIX
))
{
echo
"
<script language='JavaScript'>location.href='shop.php';alert('上传文件不符合规定,请重新选择上传文件!');</script>
"
;
}
else
{
if
(
empty
(
$GoodsName
)
||
empty
(
$SalePrice
)
||
empty
(
$EMS
)
||
empty
(
$Delivery
))
{
echo
"
<script language='JavaScript'>location.href='shop.php';alert('必须输入项不能为空!');</script>
"
;
}
else
{
$max
=
$max
+
1
;
$resourse
=
fopen
(
'
record.txt
'
,
'
a
'
);
fwrite
(
$resourse
,
date
(
'
Y-m-d H:i:s
'
)
.
"
|
"
.
$_SERVER
[REMOTE_ADDR]
.
"
|
"
.
$upload_dir
.
$_FILES
[
'
GoodsPhoto
'
][
'
name
'
]
.
"
|
"
.
$GoodsName
.
"
|
"
.
$SalePrice
.
"
|
"
.
$EMS
.
"
|
"
.
$Delivery
.
"
|
"
.
$goodsmsg
.
"
|
"
.
$buymsg
.
"
|
"
.
$TEL
.
"
|
"
.
$bank
.
"
|
"
.
$max
.
"
|
"
.
"
0
"
.
"
"
);
fclose
(
$resourse
);
do_upload(
$upload_dir
,
$upload_url
);
}
}
}
function
do_upload(
$upload_dir
,
$upload_url
)
{
$temp_name
=
trim
(
$_FILES
[
'
GoodsPhoto
'
][
'
tmp_name
'
]);
$file_name
=
$_FILES
[
'
GoodsPhoto
'
][
'
name
'
];
$file_name
=
str_replace
(
"
/
"
,
""
,
$file_name
);
$file_name
=
str_replace
(
""
,
""
,
$file_name
);
$file_path
=
$upload_dir
.
$file_name
;
if
(
$file_name
=
''
)
{
echo
"
文件名无效!
"
;
exit
;
}
if
(
$result
=
move_uploaded_file
(
$temp_name
,
$file_path
))
{
echo
"
<script type='text/JavaScript' language='JavaScript'> location.href='shop.php'; alert('您成功的添加了一件新商品!'); </script>
"
;
}
else
{
echo
"
<script language='JavaScript'>alert('上传失败!');</script>
"
;
exit
;
}
}
$tpl
->
assign (
"
newreads
"
,
$newreads
);
$tpl
->
display(
"
shopmsg.html
"
);
?>
show.php
<?
php
require_once
"
main.php
"
;
require_once
"
pg.php
"
;
header
(
"
Content-Type:text/html;charset:UTF-8
"
);
/*
*************************************************************
读取当前页面地址
*************************************************************
*/
function
getUrl()
{
$url
=
"
http://
"
.
$_SERVER
[
"
HTTP_HOST
"
];
//
echo $url."text"."<br>";
if
(
isset
(
$_SERVER
[
"
$page
"
]))
{
$url
.=
$_SERVER
[
"
$page
"
];
//
echo $url."text2"."<br>";
//echo $_SERVER["REQUEST_URI"]."<br>";
}
else
{
$url
.=
$_SERVER
[
"
PHP_SELF
"
];
if
(
!
empty
(
$_SERVER
[
"
QUERY_STRING
"
]))
{
$url
.=
"
?
"
.
$_SERVER
[
"
QUERY_STRING
"
];
}
}
echo
$url
;
return
$url
;
}
/*
*************************************************************
读取record.txt中数据功能
*************************************************************
*/
$resourse
=
fopen
(
'
record.txt
'
,
'
r
'
);
$array
=
array
();
$sortp
=
array
();
$sortd
=
array
();
while
(
$content
=
fgets
(
$resourse
))
{
list
(
$date
,
$ip
,
$file_path
,
$goods
,
$price
,
$emsprice
,
$deliveryprice
)
=
explode
(
'
|
'
,
$content
);
array_push
(
$array
,
explode
(
'
|
'
,
$content
));
}
fclose
(
$resourse
);
for
(
$i
=
0
;
$i
<
$total
;
$i
++
)
{
//
地址
$read
[
$i
][
'
Photo
'
]
=
$array
[
$i
][
2
];
//
商品名
$read
[
$i
][
'
GoodsName
'
]
=
$array
[
$i
][
3
];
//
价格
$read
[
$i
][
'
SalePrice
'
]
=
trim
(
$array
[
$i
][
4
]);
//
EMS
$read
[
$i
][
'
EMS
'
]
=
trim
(
$array
[
$i
][
5
]);
//
快递
$read
[
$i
][
'
Delivery
'
]
=
trim
(
$array
[
$i
][
6
]);
//
删除标记
$read
[
$i
][
'
DELFLG
'
]
=
$array
[
$i
][
12
];
//
当前ID
$read
[
$i
][
'
ID
'
]
=
$array
[
$i
][
11
];
}
for
(
$i
=
0
;
$i
<
count
(
$read
);
$i
++
)
{
if
(
$read
[
$i
][
'
DELFLG
'
]
==
0
)
{
$useread
[]
=
$read
[
$i
];
}
}
/*
*************************************************************
数据排序功能
*************************************************************
*/
$sortbyprice
=
$_REQUEST
[
"
price
"
];
$sortbydate
=
$_REQUEST
[
"
date
"
];
$tpl
->
assign (
"
sortbyprice
"
,
$sortbyprice
);
$tpl
->
assign (
"
sortbydate
"
,
$sortbydate
);
if
(
$sortbyprice
==
1
)
{
for
(
$i
=
0
;
$i
<
$usetotal
;
$i
++
)
{
for
(
$j
=
$usetotal
-
1
;
$j
>
$i
;
$j
--
)
{
if
(
$useread
[
$j
][
'
SalePrice
'
]
<
$useread
[
$j
-
1
][
'
SalePrice
'
])
{
$tmp
=
$useread
[
$j
];
$useread
[
$j
]
=
$useread
[
$j
-
1
];
$useread
[
$j
-
1
]
=
$tmp
;
}
}
}
}
//
echo "<pre>";
// print_r($read);
// echo "</pre>";
/*
*************************************************************
数据分页功能
*************************************************************
*/
$newread
=
array
();
$maxnum
=
$offset
+
$num
;
if
(
$maxnum
>
$usetotal
)
{
$maxnum
=
$usetotal
;
}
for
(
$i
=
$offset
;
$i
<
$maxnum
;
$i
++
)
{
$newread
[]
=
$useread
[
$i
];
}
//
echo "<pre>";
//print_r($newread);
//echo "</pre>";
$tpl
->
assign (
"
newread
"
,
$newread
);
$tpl
->
display(
"
showmsg.html
"
);

?>
buymsg.php
<?
php
require_once
"
main.php
"
;
require_once
"
pgshop.php
"
;
//
require_once"http.php";
header
(
"
Content-Type:text/html;charset:UTF-8
"
);
$msg
=
$_REQUEST
[
'
msgnum
'
];
/*
*************************************************************
读取record.txt中数据功能
*************************************************************
*/
$resourse
=
fopen
(
'
record.txt
'
,
'
r
'
);
$newarray
=
array
();
$sortp
=
array
();
$sortd
=
array
();
while
(
$content
=
fgets
(
$resourse
))
{
list
(
$date
,
$ip
,
$file_path
,
$goods
,
$price
,
$emsprice
,
$deliveryprice
)
=
explode
(
'
|
'
,
$content
);
array_push
(
$newarray
,
explode
(
'
|
'
,
$content
));
}
fclose
(
$resourse
);
for
(
$i
=
0
;
$i
<
$total
;
$i
++
)
{
//
地址
$newread
[
$i
][
'
Photo
'
]
=
$newarray
[
$i
][
2
];
//
商品名
$newread
[
$i
][
'
GoodsName
'
]
=
$newarray
[
$i
][
3
];
//
价格
$newread
[
$i
][
'
SalePrice
'
]
=
trim
(
$newarray
[
$i
][
4
]);
//
EMS
$newread
[
$i
][
'
EMS
'
]
=
trim
(
$newarray
[
$i
][
5
]);
//
快递
$newread
[
$i
][
'
Delivery
'
]
=
trim
(
$newarray
[
$i
][
6
]);
//
商品简介
$newread
[
$i
][
'
GoodsMsg
'
]
=
$newarray
[
$i
][
7
];
//
购买需知
$newread
[
$i
][
'
BuyMsg
'
]
=
$newarray
[
$i
][
8
];
//
联系方式
$newread
[
$i
][
'
Tel
'
]
=
$newarray
[
$i
][
9
];
//
汇款地址
$newread
[
$i
][
'
Bank
'
]
=
$newarray
[
$i
][
10
];
//
ID
$newread
[
$i
][
'
ID
'
]
=
$newarray
[
$i
][
11
];
//
删除标记
$newread
[
$i
][
'
DELFLG
'
]
=
$newarray
[
$i
][
12
];
//
当前行数
$newread
[
$i
][
'
Line
'
]
=
$i
;
}
$useread
=
array
();
for
(
$i
=
0
;
$i
<
count
(
$newread
);
$i
++
)
{
if
(
$newread
[
$i
][
'
DELFLG
'
]
==
0
)
{
$useread
[]
=
$newread
[
$i
];
}
}

/*
*************************************************************
数据排序功能
*************************************************************
*/
$sortbyprice
=
$_REQUEST
[
"
price
"
];
$sortbydate
=
$_REQUEST
[
"
date
"
];
$tpl
->
assign (
"
sortbyprice
"
,
$sortbyprice
);
$tpl
->
assign (
"
sortbydate
"
,
$sortbydate
);
if
(
$sortbyprice
==
1
)
{
for
(
$i
=
0
;
$i
<
$usetotal
;
$i
++
)
{
for
(
$j
=
$usetotal
-
1
;
$j
>
$i
;
$j
--
)
{
if
(
$useread
[
$j
][
'
SalePrice
'
]
<
$useread
[
$j
-
1
][
'
SalePrice
'
])
{
$tmp
=
$useread
[
$j
];
$useread
[
$j
]
=
$useread
[
$j
-
1
];
$useread
[
$j
-
1
]
=
$tmp
;
}
}
}
}
for
(
$i
=
0
;
$i
<
$usetotal
;
$i
++
)
{
if
(
$useread
[
$i
][
'
ID
'
]
==
$msg
)
{
$msgline
=
$i
;
}
}
$newreads
[]
=
$useread
[
$msgline
];
$tpl
->
assign (
"
newreads
"
,
$newreads
);
$tpl
->
display(
"
buymsg.html
"
);
?>
pgshop.php
<?
php
require_once
"
main.php
"
;
$page
=
isset
(
$_GET
[
"
page
"
])
?
intval
(
$_GET
[
"
page
"
])
:
1
;
$num
=
10
;
/*
*************************************************************
数据删除功能
*************************************************************
*/
$del
=
$_REQUEST
[
'
dele
'
];
/*
*************************************************************
读取record.txt中数据功能
*************************************************************
*/
$resourse
=
fopen
(
'
record.txt
'
,
'
r
'
);
$newarray
=
array
();
while
(
$content
=
fgets
(
$resourse
))
{
list
(
$date
,
$ip
,
$file_path
,
$goods
,
$price
,
$emsprice
,
$deliveryprice
)
=
explode
(
'
|
'
,
$content
);
array_push
(
$newarray
,
explode
(
'
|
'
,
$content
));
}
fclose
(
$resourse
);
$total
=
count
(
$newarray
);
for
(
$i
=
0
;
$i
<
$total
;
$i
++
)
{
if
(
$newarray
[
$i
][
12
]
==
0
)
{
//
地址
$newread
[
$i
][
'
Photo
'
]
=
$newarray
[
$i
][
2
];
//
商品名
$newread
[
$i
][
'
GoodsName
'
]
=
$newarray
[
$i
][
3
];
//
价格
$newread
[
$i
][
'
SalePrice
'
]
=
$newarray
[
$i
][
4
];
//
EMS
$newread
[
$i
][
'
EMS
'
]
=
$newarray
[
$i
][
5
];
//
快递
$newread
[
$i
][
'
DELFLG
'
]
=
$newarray
[
$i
][
12
];
}
}
$usetotal
=
count
(
$newread
);
//
$total=mysql_num_rows(mysql_query("select * from phptest where name like '$sel_name%';"));
$tpl
->
assign(
"
count
"
,
$usetotal
);
//
显示共多少条数据
$pagenum
=
ceil
(
$usetotal
/
$num
);
$offset
=
(
$page
-
1
)
*
$num
;
$prepg
=
$page
-
1
;
$nextpg
=
(
$page
==
$pagenum
?
0
:
$page
+
1
);
$pagenav
.=
"
<a href='javascript:οnclick=shoppage(1);'>首页</a>
"
;
if
(
$page
>
$pagenum
&&
$page
==
0
)
{
echo
"
<script language='javascript'>alert ('要查询的页数超出范围!');</script>
"
;
}
if
(
$prepg
)
{
$pagenav
.=
"
<a href='javascript:οnclick=shoppage($prepg);'>上一页</a>
"
;
}
else
{
$pagenav
.=
"
上一页
"
;
}
for
(
$i
=
1
;
$i
<=
$pagenum
;
$i
++
)
{
$pagenav
.=
"
<a href='JavaScript:οnclick=shoppage($i)' >$i</a>
"
;
}
if
(
$nextpg
)
{
$pagenav
.=
"
<a href='javascript:οnclick=shoppage($nextpg);'>下一页</a>
"
;
}
else
{
$pagenav
.=
"
下一页
"
;
}
$pagenav
.=
"
<a href='javascript:οnclick=shoppage($pagenum);'> 最后一页</a>
"
;
$tpl
->
assign (
"
pg
"
,
$pagenav
);
?>
pg.php
<?
php
require_once
"
main.php
"
;
$page
=
isset
(
$_GET
[
"
page
"
])
?
intval
(
$_GET
[
"
page
"
])
:
1
;
$num
=
10
;
//
$sel_name=$_REQUEST["user_name"];
$resourse
=
fopen
(
'
record.txt
'
,
'
r
'
);
$newarray
=
array
();
while
(
$content
=
fgets
(
$resourse
))
{
list
(
$date
,
$ip
,
$file_path
,
$goods
,
$price
,
$emsprice
,
$deliveryprice
)
=
explode
(
'
|
'
,
$content
);
array_push
(
$newarray
,
explode
(
'
|
'
,
$content
));
}
fclose
(
$resourse
);
$total
=
count
(
$newarray
);
for
(
$i
=
0
;
$i
<
$total
;
$i
++
)
{
if
(
$newarray
[
$i
][
12
]
==
0
)
{
//
地址
$newread
[
$i
][
'
Photo
'
]
=
$newarray
[
$i
][
2
];
//
商品名
$newread
[
$i
][
'
GoodsName
'
]
=
$newarray
[
$i
][
3
];
//
价格
$newread
[
$i
][
'
SalePrice
'
]
=
$newarray
[
$i
][
4
];
//
EMS
$newread
[
$i
][
'
EMS
'
]
=
$newarray
[
$i
][
5
];
//
快递
$newread
[
$i
][
'
DELFLG
'
]
=
$newarray
[
$i
][
12
];
}
}
$usetotal
=
count
(
$newread
);
//
$total=mysql_num_rows(mysql_query("select * from phptest where name like '$sel_name%';"));
$tpl
->
assign(
"
count
"
,
$usetotal
);
//
显示共多少条数据
$pagenum
=
ceil
(
$usetotal
/
$num
);
$offset
=
(
$page
-
1
)
*
$num
;
$prepg
=
$page
-
1
;
$nextpg
=
(
$page
==
$pagenum
?
0
:
$page
+
1
);
$pagenav
.=
"
<a href='javascript:οnclick=page(1);'>首页</a>
"
;
if
(
$page
>
$pagenum
&&
$page
==
0
)
{
echo
"
<script language='javascript'>alert ('要查询的页数超出范围!');</script>
"
;
}
if
(
$prepg
)
{
$pagenav
.=
"
<a href='javascript:οnclick=page($prepg);'>上一页</a>
"
;
}
else
{
$pagenav
.=
"
上一页
"
;
}
for
(
$i
=
1
;
$i
<=
$pagenum
;
$i
++
)
{
$pagenav
.=
"
<a href='JavaScript:οnclick=page($i)' >$i</a>
"
;
}
if
(
$nextpg
)
{
$pagenav
.=
"
<a href='javascript:οnclick=page($nextpg);'>下一页</a>
"
;
}
else
{
$pagenav
.=
"
下一页
"
;
}
$pagenav
.=
"
<a href='javascript:οnclick=page($pagenum);'> 最后一页</a>
"
;
$tpl
->
assign (
"
pg
"
,
$pagenav
);
?>
record.txt
以上文本中,商品属性以“|”符号隔开,从左到右依次为:添加日期 | IP地址 |商品图片存放路径 | 商品名 | 商品价格 | 特快价格 | 快递价格 | 商品介绍 | 购物须知 | 联系方式 | 联系我们 | 商品ID | 删除标记(0为没有被删除,1为已删除)
I hope it will useful for u!
1:填加商品信息
2:修改信息
3:删除信息
4:按价格高低排序
5:按填加商品的时间排序
6:分页功能(为程序更显而易见,把这个写在两个文件里,实际项目中不推荐这么写)
7:提供前能展示页面和后台管理页面
8:后台登陆HTTP验证功能(未实现,更新中)
以上所有数据均存放在record.txt文本当中。
文件描述
main.php模板引擎配置路径文件,shop.php后台管理员程序,shopmsg.html页面模板文件,show.php前台展示程序,shomsg.html前台页面模板文件,buymsg.php商品详细信息程序,buymsg.html商品详细信息页面模板文件,pg.php前台显示中使用的分页文件,pgshop.php后台管理中用到的分页文件。
实现方法
简单说一下实现方法,PHP中对文本操作,打开->操作->关闭。操作的性质就取决于你打开的方式,书上讲了很多打开方式,其实就是两种:只读和写入,只读就不多说了,从字面意思上就已经知道他的全部了。现在就简单的说一下写入。写入时书上讲了10种方式,但其实只有四种:追加,重写,二进制和用于与其他模工的结合模式。今天我们用到的只有前两种,添加新数据时用追加,这样之前所添加的数据的数据就不会被删除(fopen(“record.txt”,'a')),相关使用方法见http://www.php.net。重写,就是把原有的所有数据全部清空后再添加进新的数据,根据这个原理,我们以修改后的数组中的数据作为数据源就可对文本进行修改操作了。关于删除,PHP中我没有找到相关删除的操作,所以在此我就对数据行最后的删除标记进行操作,如果是0就是没有被删除的,如果是1就是刚刚删除掉的,之后在读入数据时判断该项是否是0就可以实现数据的删除操作,好了,程序的实现方法就简单说到这里,下面是我的源码,如有不妥之处,请在下方留言,或发Mail至zmouki@gmail.com,共同讨论。
希望这个能对更多初次接触PHP对文本操作的朋友有所帮助。
源码:
main.php












shop.php

































































































































































































































































































































































































show.php














































































































buymsg.php


























































































pgshop.php









































































pg.php




































































record.txt

以上文本中,商品属性以“|”符号隔开,从左到右依次为:添加日期 | IP地址 |商品图片存放路径 | 商品名 | 商品价格 | 特快价格 | 快递价格 | 商品介绍 | 购物须知 | 联系方式 | 联系我们 | 商品ID | 删除标记(0为没有被删除,1为已删除)
I hope it will useful for u!