最近学习thinkphp,做了一个博客系统,其中感觉实现一个类似于qq空间的评论和回复功能比较复杂,所以把这次的经历记录下来,与大家共勉,具体的方法就不说了,在这里分享一下思路。

目标就是这种,关键是一条评论对应多条回复的显示

我在数据库中建了一个user(用户)表,一个comment(评论)表,一个reply(回复)表,(其实也可以将评论和回复建在一张表上)。user表上主要字段有user_id,user_name,name,password,等一些用户基本信息的字段,comment表上主要字段有:comment_id,comment_content,user_id,blog_id(这个是和博客关联的),reply表上主要字段有reply_id,reply_content,reply_from_user_id,reply_to_user_id,comment_id

其中显示博客的评论和回复的显示是最难的,具体的评论和回复的功能,只要想办法获取到表中相应字段的值接进去就好了,

评论和回复的显示有两种思路:

1. 想办法只向后台提交一个blog_id,博客的内容可以直接从后台发送至前台,然后在后台想办法将将评论和回复结果拼接成一个三维数组,然后将此数组发送到前台用双重foreach标签输出,三维数组的形式大概是

2.先往后台提交一个blog_id,不使用多表联合查询,查询博客的相关信息发送到html ,然后再将和这篇博客有关的评论发送至html,用foreach输出,每条评论使用一个单独的div将其div的id设置成评论的id  (利用jquery在初始化界面时会自动执行function方法的各种方法),再用jquery向后台发送请求,发送数据还是那个blog_id,查询到所有关于那篇博客的comment_id返回ajax 在成功的基础上,使用for循环,重复向后台发送请求,使用回复表和user表多表连接,(因为表中有两个user_id,所以需要和用户表连接两次,该过程中使用as关键字分别为user表取别名,这样就可以对同一张表连接两次了)查询到那个回复的相关内容,在这个成功的基础上,把返回的回复的内容加到相应的comment的div(通过该div的id)的后面。

这两种方法都可以使评论和回复显示类似于qq空间,第一种方法比较简单,但是,需要对数组特别熟悉,将结果拼接起来,第二种方法比较复杂,代码量也多,而且这样执行对服务器的压力比较大,所以建议第一种方法。

评论功能的实现,相对于回复来讲比较简单:在点击提交评论的时候,首先获取session中存储的user_id ,和那篇博客的id(评论表和博客表关联),和文本框中填的评论的内容,然后将这些信息插入评论表中  ,再刷新当前页面就可以了

回复功能的实现(这个也比较难):

在上面显示的基础上,比如 张三@李四:内容。  在张三那个div上设置一个属性记录张三的user_id,在点击回复的时候,获取这个user_id。在点击提交回复的时候 ,获取回复的内容,和评论的div上记录的评论的id,连同之前的user_id(作为reply_to_user_id) 提交到后台,然后在后台获取session的user_id(作为reply_from_user_id) ,然后直接将这些数据(经过php代码验证过没问题)就直接插入到数据库中就可以了。

可能是我水平有限,如果哪个地方有问题,欢迎提出。。

类似于qq空间类型的评论和回复的更多相关文章

  1. JS时间轴效果(类似于qq空间时间轴效果)

    在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...

  2. QQ空间未授权评论_已忽略

    看群友们聊天时发现的, 大概是做了查看了动态访问时间的一个设置, 但是仅自己可见的说说还是被评论了的这么一个问题. 闲的没事就翻了一下找一下问题. 这个方法嘎嘎鸡肋, 可以说完全没用, 交到tsrc, ...

  3. 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置

    前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...

  4. Android 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置

    前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...

  5. Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件

    大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...

  6. QQ空间/朋友圈类界面的搭建

    类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...

  7. 制作QQ空间的一些想法

    新的项目开始了,这一次是做一个网站类似于QQ空间那样的,基本功能比如说写日志,说说之类的都要有(说说是要有楼中楼嵌套的,应该能够上传图片),还要可以修改个人信息.登录注册之类的更不用说了,还要有一定的 ...

  8. 模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)

      我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取 ...

  9. Atitit qzone qq空间博客自动点赞与评论工具的设计与实现

    Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...

随机推荐

  1. Android常用开发工具的用法

    1.在命令行创建.删除和浏览AVD 在命令行下管理AVD需要借助于android命令(位于Android SDK安装目录的tools子目录下),如果直接执行android子命令将会启动Android ...

  2. HTML 样式- CSS

    如何使用CSS CSS 是在 HTML 4 开始使用的,是为了更好的渲染HTML元素而引入的. CSS 可以通过以下方式添加到HTML中: 内联样式- 在HTML元素中使用"style&qu ...

  3. 如何开发基于Dubbo RPC的分布式服务?

    什么是Dubbo? Dubbo能做什么? 在Crystal框架下,如何开发基于Dubbo RPC的服务? 在Crystal框架下,如何调用Dubbo RPC服务? 相关的文章 什么是Dubbo? Du ...

  4. python中将两个list合并为字典

    两个list合并为字典的代码如下: def Run(): list2 = [1, 2, 3, 4, 5 ]; list3 = ["a", "b", " ...

  5. 锁 和 CopyOnWrite的实现

    1.普通锁 只有lock功能, Java实现:ReentrantLock lock = new ReentrantLock(); lock和unlock: lock.lock(); lock.unlo ...

  6. HDU 1006 [Tick Tick]时钟问题

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1006 题目大意:钟表有时.分.秒3根指针.当任意两根指针间夹角大于等于n°时,就说他们是happy的, ...

  7. [CSS3] 学习笔记--CSS盒子模型

    1.CSS盒子模型概述 盒子模型的内容范围包括:margin(外边距).border(边框).padding(内边距).content(内容)部分组成. 2.内边距 内边距在content外,bord ...

  8. redis&rabbitMQ安装

    前言: 学习python已经有一段时间了,最近在学twisted(博客:twisted安装),redis,rabbitMQ感觉有点难度,所以还是写下博客整理下. 一.Redis的安装 redis是一种 ...

  9. db_link

    1.查询 SYSDBA登录, sys登录    SELECT * FROM SYS.link$; select owner,object_name from dba_objects where obj ...

  10. 扩展jquery插件的方法

    方法1.通过一个简单的.jQuery函数prototype属性的别名(jquery.fn进行扩展) jQuery.fn.newStuff = function(){ console.log(" ...