用php加mysql实现留言板的文章倒处是,那我为什么还要在这里写出来呢?有几点原因:
第一:有些文章,解释不够,读者看不懂。第二:这个留言板带有回复功能,分页显示, 及查找。而最重要的一点就是,这个通过这个留言板,读者可以对php+mysql有一个初步的了解,这一点对初学者来说特别重要。至于写论坛也差不了多少,把名字改一下就可以了.
言归正传,让我们来分析一下思路。
三个基本功能就是:回复,分页及查找。
对于回复我们可以用几种方法实现。
第一种就是原始贴(第一次发表的贴)和回复贴放在一个数据库里面。首先我们要有一个自动编号的字段用来唯一区分每贴(假设为id)。再用一个字段表示该贴是回复哪一贴(假设为:rid),它的值为:回复贴的id.当然还少不了留言时间和名字之类的字段,但是最重要的是这两个字段(id,isreply,link).
第二种方法就是原始贴和回复贴分别放在两个表(代表:vb论坛).在原始贴所在表要一个关键的字段id(自动编号).在回复贴要两个关键字段:id(自动编号),rid(回复谁,等于一个原始贴的id).
两种方法各有优缺点:第一种,相对要在查找贴子时好一点.第二种,进行回复贴和原始贴统计时好一点.总的来说第一种要好.在这里我们就选第一种.
分页功能我们也可以有几种方法实现.
第一种利用mysql语句中的limit语句实现,语法为:select * from guestbook limit min,max.然后把结果全部显示出来.
第二种就是选全部.然后利用mysql_data_seek()函数移到指定位置,再读取page条记录.
很显然第一种优势大.我们选第一种.
至于查找.要注意一点的是在mysql中用"_"匹配单个字符,而用"%"匹配任意字符,不向sql_server中用"?"匹配单个字符.而用"*"匹配任意字符.
思路有了后,就动手.
首先我们在mysql中创建一个叫guestbook的表.
sql语句如下:
create table guestbook (
userid varchar(15),
say text,
ttime datetime,
title varchar(20),
click bigint,
rnum bigint,
rid bigint,
id bigint AUTO_INCREMENT not null,
primary key(id)
)
其中userid为姓名.
say为留言内容.为备注型.
ttime为留言时间.
click为点击次数记录
rnum为回复数记录
rid为回复谁
id为自动编号字段.
当然我们还可以加入其它的如电子邮件,个人主页之类的.在这里就省略了.
我们要和登录程序接口.接口如下:
在你登录成功时分配两个session变量:
$session_userid为用户名.没有登录的用户不能留言,及回复.
$session_power为该用户权限,从0到5.0最小,5最大.删除贴子权限为$session_power>=1就可以,你也可以进行更改.