类似于qq空间类型的评论和回复
最近学习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空间类型的评论和回复的更多相关文章
- JS时间轴效果(类似于qq空间时间轴效果)
在上一家公司写了一个时间轴效果,今天整理了下,感觉有必要写一篇博客出来 给大家分享分享 当然代码还有很多不足的地方,希望大家多指点指点下,此效果类似于QQ空间或者人人网空间时间轴效果,当时也是为了需求 ...
- QQ空间未授权评论_已忽略
看群友们聊天时发现的, 大概是做了查看了动态访问时间的一个设置, 但是仅自己可见的说说还是被评论了的这么一个问题. 闲的没事就翻了一下找一下问题. 这个方法嘎嘎鸡肋, 可以说完全没用, 交到tsrc, ...
- 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置
前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...
- Android 实现类似于QQ空间相册的点击图片放大,再点后缩小回原来位置
前几天看到了有人在android5.0上实现了如下图一样的效果,我自己就去搜了下.参考了国外一篇文章和国内的一篇文章,最终实现了想要的效果.具体参考的网址我已经贴到文章末尾,大家可以去英文的那个网站看 ...
- Android项目实战(十六):QQ空间实现(一)—— 展示说说中的评论内容并有相应点击事件
大家都玩QQ空间客户端,对于每一个说说,我们都可以评论,那么,对于某一条评论: 白雪公主 回复 小矮人 : 你们好啊~ 我们来分析一下: .QQ空间允许我们 点击 回复人和被回复人的名字就可以进入对于 ...
- QQ空间/朋友圈类界面的搭建
类似于QQ空间的布局主要是在说说信息.点赞.回复三大部分的自适应布局上. 当我们需要搭建类似QQ空间.微信朋友圈的界面的时候,可做如下操作: 创建一个对应的model类: 创建一个对应model类的f ...
- 制作QQ空间的一些想法
新的项目开始了,这一次是做一个网站类似于QQ空间那样的,基本功能比如说写日志,说说之类的都要有(说说是要有楼中楼嵌套的,应该能够上传图片),还要可以修改个人信息.登录注册之类的更不用说了,还要有一定的 ...
- 模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取 ...
- Atitit qzone qq空间博客自动点赞与评论工具的设计与实现
Atitit qzone qq空间博客自动点赞与评论工具的设计与实现 Qzone发送评论的原理 首先,有个a标签, <a class="c_tx3" href="j ...
随机推荐
- CSS 文本、字体、链接
CSS 文本属性可定义文本的外观. 通过文本属性,您可以改变文本的颜色.字符间距,对齐文本,装饰文本,对文本进行缩进,等等. 缩进文本 把 Web 页面上的段落的第一行缩进,这是一种最常用的文本格式化 ...
- 部署Sharding分片
这是一种将海量的数据水平扩展的数据库集群系统,数据分表存储在sharding 的各个节点上,使用者通过简单的配置就可以很方便地构建一个分布式MongoDB 集群. MongoDB 的数据分块称为 ch ...
- 《RDLC部署》RDLC部署到IIS缺少DLL程序集
1.错误:从vs生成网站部署到服务器后打开RDLC报表却提示缺少DLL程序集. 一般是缺少如下文件 1. Microsoft.ReportViewer.Common.dll 2. Microsof ...
- 字符集编码与Python(一)编码历史
编码历史 ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于 ...
- 微信面试题-获取元素的最终background-color
一.题目 用JS代码求出页面上一个元素的最终的background-color,不考虑IE浏览器,不考虑元素float情况. 二.题目解析 1.考察底层JavaScript基础 前端开发,日常最 ...
- C# 数组、ArrayList、List、Dictionary的用法与区别
前言 在工作中经常遇到C#数组.ArrayList.List.Dictionary存取数据,但是该选择哪种类型进行存储数据,对于初学者的我一直不知道该怎么取舍.于是抽空好好看了下他们的用法和比较,在这 ...
- gcc 简单编译流程
注意:GCC在链接时优先使用动态链接库,只有当动态链接库不存在时才考虑使用静态链接库,可在编译时加上-static选项,强制使用静态链接库. gcc -static 此选项将禁止使用动态库,所以,编 ...
- 简学Python第一章__进入PY的世界
#cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...
- SQL SERVER将多行数据合并成一行(转载)
昨天遇到一个SQL Server的问题:需要写一个储存过程来处理几个表中的数据,最后问题出在我想将一个表的一个列的多行内容拼接成一行 比如表中有两列数据 : ep_classes ep_name A ...
- canvas绘制圆形进度条(或显示当前已浏览网页百分比)
使用canvas绘制圆形进度条,或者是网页加载进度条 或者是显示你浏览了本网页多少-- 由于个浏览器的计算差异,打开浏览器时 初始值有所不同,但是当拉倒网页底部时,均显示100%. 兼容性:测试浏览器 ...