mysql前段编写_个人网站留言页面(前端jQuery编写、后台php读写MySQL)

首先,上个人网站的留言页面,大家可以看看效果:留言板

8bcd42805bf98994b698d1814e306b5a.png

前端为了省事,使用jQuery编写,后台使用php简单读写MySQL数据库。

数据库设计和实现思路

数据库创建了一个表:comments,结构如下图:

ae6a6dcf085573b90d822259db15f6c5.png

全部评论(包括文章评论回复,留言板)都写在同一张表中,不同的评论区用字段belong区分

同一个评论区里,parent为0表示为评论,parent为某值时表示为哪个评论的回复,思路不复杂。

注意,这里并不讲CSS,大家根据自己的需要定制,现在开始封装:

定下功能

我们根据自己的需要定下功能,首先我的网站并没有实现消息提醒,即时通讯的功能,所以评论回复并不会提示站长或者用户,只会对留言区产生效果,所以我们只要简单实现以下功能:

1、显示评论列表

2、能够提交评论

3、进行回复

评论类

我们将评论的功能封装成一个类,通过实例化就能创建不同的评论区,所以不难想到,

实例化的时候我们需要传入的参数可能有:评论区的id、获取评论的php地址,提交评论的php地址。

所以我们可以猜想实例化评论区的代码可能为:

var oCmt = new Comment({

parent: $('#box'), //你想要将这个评论放到页面哪个元素中

id: 0,

getCmtUrl: './php/getcomment.php',

setCmtUrl: './php/comment.php'

})

当然,我是在Comment类上定义一个静态方法

Comment.allocate({

parent: $('#box'),

id: 0,

getCmtUrl: './php/getcomment.php',

setCmtUrl: './php/comment.php'

})

大同小异,只是初始化的地方不同而已

构造函数

function Comment(options){

this.belong = options.id;

this.getCmtUrl = options.getCmtUrl;

this.setCmtUrl = options.setCmtUrl;

this.lists = [];

this.keys = {};

this.offset = 5;

}

var fn = Comment.prototype;

Comment.allocate = function(options){

var oCmt = new Comment(options);

if (oCmt.belong == undefined || !oCmt.getCmtUrl || !oCmt.setCmtUrl) {

return null;

};

oCmt.init(options);

return oCmt;

};

里面的变量和方法我们慢慢解释,如果你不定义一个allocate方法,那么可以写成:

function Comment(options){

this.belong = options.id;

this.getCmtUrl = options.getCmtUrl;

this.setCmtUrl = options.setCmtUrl;

this.lists = [];

this.keys = {};

this.offset = 5;

if (this.belong == undefined || !this.getCmtUrl || !this.setCmtUrl) {

return null;

};

this.init(options)

}

var fn = Comment.prototype;

变量先不说,像我都是先写功能函数,然后需要添加属性变量再回头来添加,我们只需要看到构造函数最后执行了:

this.init(options)

从名字可以看出是初始化函数。

init函数

fn.init = function (options) {

//初始化node

this.initNode(options);

//将内容放进容器

this.parent.html(this.body);

//初始化事件

this.initEvent();

//获取列表

this.getList();

};

fn为Comment.prototype,只说一次,下面就不再说了。

初始化就是有4个工作要做,从代码注释可以看出,现在一个一个讲解

initNode函数

从名字可以看出主要初始化节点或者缓存dom

fn.initNode = function(options){

//init wrapper box

if (!!options.parent) {

this.parent = options.parent[0].nodeType == 1 ? options.parent : $('#' + options.parent);

};

if (!this.parent) {

this.parent = $('div');

$('body').append(this.parent);

}

//init content

this.body = (function(){

var strHTML = '

' +

'

' +

'' +

'提交评论' +

'

' +

'

' +

'

'

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值