最近学习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. KingbaseES的HA搭建

    1.配置资源前准备: 安装好数据库并保持两台机器用户ID及组ID一致,组ID和用户ID在/etc/passwd查看,如不保持一致,可能导致切机时阵列的属主改变,导致数据库无法启动. 建议用法,现在两台 ...

  2. Web浏览器兼容性测试工具如何选择

    对于前端开发工程师来说,网页兼容性测试工程师而言,确保代码在各种主流浏览器的各个版本中都能正常工作是件很费时的事情,幸运的是,有很多优秀的工具可以帮助测试浏览器的兼容性,领测软件测试网向您推荐12款很 ...

  3. Bootstrap入门(二十四)data属性

    Bootstrap入门(二十四)data属性 你可以仅仅通过 data 属性 API 就能使用所有的 Bootstrap 插件,无需写一行 JavaScript 代码.这是 Bootstrap 中的一 ...

  4. javaScript基础详解(1)

    javaScript基础详解 首先讲javaScript的摆放位置:<script> 与 </script> 可以放在head和body之间,也可以body中或者head中 J ...

  5. 关于Task的一点思考和建议

    前言 本打算继续写SQL Server系列,接下来应该是死锁了,但是在.NET Core项目中到处都是异步,最近在写一个爬虫用到异步,之前不是很频繁用到异步,当用到时就有点缩手缩尾,怕留下坑,还是小心 ...

  6. 用Hashcat每秒计算1.4亿个密码,破解隔壁WIFI密码

    Hashcat是啥 Hashcat是什么呢?Hashcat是当前最强大的开源密码恢复工具,你可以访问Hashcat.net网站来了解这款工具的详细情况.本质上,Hashcat 3.0是一款高级密码恢复 ...

  7. Hadoop 的安装及配置

    Linux RedHat--CentOs     CentOs 6.4 Debian--Ubuntu   VMware 虚拟机 关于虚拟机实现上网的解决办法         NAT: 网络地址转换 当 ...

  8. Android MemInfo

    Note that memory usage on modern operating systems like Linux is an extremely complicated and diffic ...

  9. WinForm——记住密码

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runti ...

  10. 融云发送手机短信验证短信(.net版本)

    首先本次需求是在MVC5中进行的,通过收费的融云服务来验证手机号码,而且本次的项目也是前后台分离,所以添加了WEBAPI2,那么先添加WEBAPI的接口 using System; using Sys ...