我们在很多网站上都能看到各式各样的留言板,它是网站与访客之间进行交流的主要手段之一。一个设计合理,界面优美的留言板程序能从侧面体现网站良好的服务,给来访用户留下美好的印象,增强用户对网站的信心。留言板从程序角度来看其实很简单,难在朴实无华的功能中有创意的表现。下面我们仅以PHP脚本程序为例,从程序的角度讲述怎样制作留言板。 留言板实现的原理一般有两种,即文件型和数据库型。它们是以留言信息在服务器的存放方式来区分的。由于文件型留言系统难以胜任多用户、大容量的信息处理和查询事务,因此具有良好延展性的数据库驱动方式是很多事务处理应用的首选。下面我们以PHP、Mysql系统为平台构建一个基本的留言板。 基本的留言板由留言填写、保存、显示、管理等程序组成,架构很简单,但是涉及了PHP+Mysql结构的大部分操作,是我们学*PHP编程的绝佳入门练*。 1.数据库结构: 留言编号 id int 自动递增 留言者姓名 name varchar 20 最多20个字符 留言时间 msgdate datetime 日期型 电子邮件 email varchar 40 最多40个字符 留言内容 msg text 类型 这是一个简单的留言存储模型库,根据设计需要还可以增加一些字段,例如记录访问者的IP地址、操作系统类型等特征,为进一步分析客户群体提供依据。 2.填写留言的HTML文件: write.htm 该文件构造了留言本最基本的界面,定义了一个包含姓名、电子邮件、留言内容等基本填写项目的表单,提交后将由savemsg.php程序进行错误校验和入库处理。 3 . 错误校验和入库处理savemsg.php { Sdb = mysql_connect(′localhost′,′username′,′password′); //连接数据库,注意将用户名、口令替换成自己的用户名和口令,以符合实际情况 mysql_select_db(′test′); //选择guesbook表所在数据库,这里是test库 Squery=″INSERT into guestbook(name, email,msgdate,msg) values(′Sname′, ′Semail′, now(),′Smsg′)″; //构造插入数据的SQL语句 mysql_query(Squery, Sdb); //执行插入数据操作 } ?> 我们可能注意到:在SQL语句中我们使用了Mysql的NOW()函数以‘YYYY-MM-DD HH:MM:SS’的形式返回当前的日期时间,并直接存到DATETIME字段中(事实上在定义字段时就可以将msgdate字段的默认值设置成NOW(),这样我们对程序就不必另行处理了),另外CURDATE()以‘YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中,CURTIME()以‘HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。 4.查看留言view.php mysql_select_db(′test′); //选择数据库 Squery=″select * from guestbook″; //构造查询语句 Sresult=mysql_query(Squery, Sdb); //执行查询语句 echo ′姓名 电子邮件 留言时间 留言内容 ′; //构造表格头 while(Srow = mysql_fetch_array(Sresult)) { //用循环输出表格 echo ′ ′.Srow[″name″].′ ′; echo ′ ′.Srow[″email″].′ ′; echo ′ ′.Srow[″msgdate″].′ ′; echo ′ ′.Srow[″msg″].′ ′; } mysql_free_result(Sresult);//释放资源 mysql_close(Sdb);//关闭数据库 echo ′ ′; ?> 5.管理留言本,该程序能列出所有留言条目概况,并为每个条目提供checkbox,以供选择删除。 Addmin.php 到这里,我们已经构建了一个具备填写、保存、浏览、管理(主要是删除操作)等功能的留言本。应该说这个程序达到了我们预期的目的。然而,一个留言本真正投入实用,必须考虑许多特殊情况,并具有良好的人机界面,和一定容错、纠错性。对比网络上成熟的留言本程序,我们还需要很多工作,这些将在下期“留言板制作高级技巧”里介绍,就到这里了,再见! |