模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)...
在上一篇随笔中已经将如何发布动态呈现了,那么现在来看一下剩下的评论动态、回复评论、删除动态和评论功能,这几个功能会有点绕~~~
一、思路如下:
(1)你发表动态之后,会有人评论这一条动态,当评论之后,你也会回复该评论;(此处评论要单独一张表,回复也要单独一张表)
(2)删除动态:会将动态连同评论、回复全部删除;删除评论:只会删除该条评论
二、在写代码之前,我还是想把流程说一遍:
(1)发表动态---评论---回复---再回复
(2)将上边的流程细化,我先在纸上写出,再上传,码字不能表达清楚(注意的是,我想要的功能的实现,并不是一模一样的哈)
三、还是先将代码分块解释,最后将主页面代码完全附上(含上一篇)
在上一篇中已经实现发布动态、弹出评论框,那么现在接着向下走:
分别看一下qqfriends,qqdongtai,qqpinglun,qqhuifu表,这是初始状态:
先以用户李四登录,由数据库qqfriends表中知道,李四的好友是zhangsan, 和zhaoliu,那么他的空间中显示的好友动态如下:
与上一篇相比,在这一篇中,谁登录的我用中文显示的:
<?phpsession_start();$uid = "";if(empty($_SESSION["uid"])){header("location:login.php");exit;}$uid = $_SESSION["uid"];require "../DB.class.php";$db = new DB();$sql = "select name from qqusers where uid='{$uid}'";$name = $db->strquery($sql);echo "欢迎:"."<span class='qid' yh='{$uid}'>{$name}</span>";?>
第一步:评论
1、评论张三的动态,点击“确定”后,就是第二张图了~
2、并将评论的内容写进数据库
//定义空字符串,容纳评论的id var code=""; $(".pl").click(function(){ code = $(this).attr("code"); //将评论的id重新赋值 }) //将评论写进数据库 $("#tjpl").click(function(){var plnr = $(".pldt").val();var plid = code; //取发动态的id$.ajax({url:"pl-cl.php",data:{plnr:plnr,plid:plid},type:"POST",dataType:"TEXT",success:function(data){alert("评论成功!");window.location.href="main.php";} }); })
pl-cl.php页面
<?php
require "../DB.class.php";
$db = new DB();
session_start();
$uid = $_SESSION["uid"];$plnr = $_POST["plnr"];
$dtid = $_POST["plid"];$time = date("Y-m-d H:i:s", time());$sql = "insert into qqpinglun values ('','{$dtid}','{$uid}','{$plnr}','{$time}')";
$db->query($sql,0);?>
查看qqpinglun表中是不是多了这一条 “为什么开心呢?”:
3、读取评论内容:
<!--读取评论内容--> <div id="dqpl"><?php$sql = "select * from qqpinglun";$arr = $db->query($sql);foreach($arr as $v){$sql = "select * from qqdongtai where dtid='{$v[1]}'";$arr2 = $db->query($sql);foreach($arr2 as $m){//取发动态的姓名$sql = "select name from qqusers where uid='{$v[2]}'";$name = $db->strquery($sql);//若果是登录者评论则显示“我”if($v[2]==$uid){$name ="我";}//获取被评论者的姓名$sql = "select name from qqusers where uid=(select uid from qqdongtai where dtid='{$v[1]}')";$bpl = $db->strquery($sql);echo "<div class='a'><span class='xm'>{$name}</span>评论<span class='xm'>{$bpl}</span>的动态:{$m[2]}<div><div class='b'>{$v[3]}</div><div class='c'>发表评论时间:{$v[4]}</div><div class='d'><button class='btn btn-primary hf' ids ='{$v[0]}'>回复</button><span><a href='scpl-cl.php?code={$v[0]}'>删除评论</a></span></div>";}} ?> </div>
第二步:回复
1、回复刚刚的评论:
2、将回复内容写进数据库
//定义空字符串,容纳回复评论的id var ids=""; $(".hf").click(function(){ ids = $(this).attr("ids"); //将评论的id重新赋值
// alert((ids)); $('#mM').modal('show'); }) //将回复评论写进数据库 $("#tjhf").click(function(){var hfnr = $(".hfpl").val();
// alert(hfnr);
// alert(ids);$.ajax({url:"hf-cl.php",data:{hfnr:hfnr,ids:ids},type:"POST",dataType:"TEXT",success:function(data){alert("回复成功!");window.location.href="main.php";} }); })
hf-cl.php页面
<?php
require "../DB.class.php";
$db = new DB();
session_start();
$uid = $_SESSION["uid"];$hfnr = $_POST["hfnr"];
$cid = $_POST["ids"];$time = date("Y-m-d H:i:s", time());$sql = "insert into qqhuifu values ('','{$cid}','{$uid}','{$hfnr}','{$time}')";
$db->query($sql,0);?>
查看qqhuifu表,是不是多了一行呢?
3、将回复内容读出:
<div id="dqhf"> <!--取一次回复--><?php$sql = "select * from qqhuifu where cid in (select cid from qqpinglun)";$arr = $db->query($sql);foreach($arr as $a){$sql = "select * from qqpinglun where cid='{$a[1]}'";$arr2 = $db->query($sql);foreach($arr2 as $n){//取评论动态的姓名$sql = "select name from qqusers where uid='{$a[2]}'";$name = $db->strquery($sql);//若果是登录者评论则显示“我”if($a[2]==$uid){$name ="我";}//获取被回复评论的姓名$sql = "select name from qqusers where uid=(select uid from qqpinglun where cid='{$a[1]}')";$bpl = $db->strquery($sql);echo "<div class='a'><span class='xm'>{$name}</span>回复<span class='xm'>{$bpl}</span>的评论:{$n[3]}<div><div class='b'>{$a[3]}</div><div class='c'>回复时间:{$a[4]}</div><div class='d'><button class='btn btn-primary hf' ids ='{$a[0]}'>回复</button><span><a href='schf-cl.php?code={$a[0]}'>删除回复</a></span></div>"; }}?></div>
回复内容已经显示了:
第三步:删除
1、删除动态:(含评论和回复)
scdt-cl.php
<?php
$code = $_GET["code"];require "../DB.class.php";
$db = new DB();$sql = "delete from qqdongtai where dtid='{$code}'";
$db->query($sql,0);$sql2 = "delete from qqpinglun where dtid='{$code}'";
$db->query($sql2,0);$sql3 = "delete from qqhuifu where cid=(select cid from qqpinglun where dtid='{$code}')";
$db->query($sql3,0);header("location:main.php");
?>
2、删除评论:(含回复)
scpl-cl.php
<?php
$code = $_GET["code"];require "../DB.class.php";
$db = new DB();$sql2 = "delete from qqpinglun where cid='{$code}'";
$db->query($sql2,0);$sql3 = "delete from qqhuifu where cid='{$code}'";
$db->query($sql3,0);header("location:main.php");
?>
3、删除回复:(只自己)
schf-cl.php
<?php
$code = $_GET["code"];require "../DB.class.php";
$db = new DB();$sql2 = "delete from qqpinglun where cid='{$code}'";
$db->query($sql2,0);$sql3 = "delete from qqhuifu where cid='{$code}'";
$db->query($sql3,0);header("location:main.php");
?>
关于删除就不依次试了~~~注意包含关系就好了
主页面全部代码:
<!DOCTYPE html>
<html> <head><meta charset="UTF-8"><title></title><!--引入bootstrap的css文件--><link type="text/css" rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css" /><!--引入js包--><script src="../jquery-3.2.0.js"></script><!--引入bootstrap的js文件--><script src="../bootstrap-3.3.7-dist/js/bootstrap.min.js"></script><style>#body{height: auto;width: 1000px;margin: 0px auto;}#xdt{height: 200px;width:1000px; border: 1px solid cadetblue;}/*动态和评论div*/.fdt{position: relative; width: 1000px;}/*读取内容div*/#nr{width: 1000px;}/*谁发表动态样式*/.a{float: left;min-height:40px;width: 1000px;background-color: goldenrod;}/*姓名*/.xm{font-size: 18px;color: brown;font-weight: bold;}/*发表动态样式内容*/.b{float: left;text-align: left;height:100px;line-height: 50px;width: 100%;background-color: greenyellow;}/*发表时间与回复删除样式*/.c{height:30px;width: 800px;float: left;font-size: 12px;text-align:right;background-color: gainsboro;}/*弹出模态框评论框*/.d{height:30px;width: 200px;float: left;font-size: 15px;text-align:center;background-color: gainsboro;}/*读取评论div*/#dqpl{width: 1000px;}#dqhf{width: 1000px;}</style> </head><body><div id="body"><?phpsession_start();$uid = "";if(empty($_SESSION["uid"])){header("location:login.php");exit;}$uid = $_SESSION["uid"];require "../DB.class.php";$db = new DB();$sql = "select name from qqusers where uid='{$uid}'";$name = $db->strquery($sql);//这种方法可以取到uid。echo "欢迎:"."<span class='qid' yh='{$uid}'>{$name}</span>";?><!--写动态--><div id="xdt"><p>发表动态:</p><textarea cols="100px" rows="5px" name="xdt" class="xdt"></textarea><input type="submit" value="发表" id="fb" /> </div><!--动态内容结束--><!--容纳动态内容--> <div class="fdt"><p style="color: brown; font-family: '微软雅黑';font-weight: bold;font-size: 20px; margin-bottom: 20px; margin-top: 20px;">朋友动态:<p><!--读取动态内容--><div id="nr"><?php$date = date ("Y-m-d H:i:s");$sql = "select * from qqdongtai where uid='{$uid}' or uid in (select uid from qqfriends where fname =(select name from qqusers where uid='{$uid}')) order by time desc";//echo $sql;$arr = $db->query($sql);
// var_dump($arr);foreach($arr as $v){$sql = "select name from qqusers where uid='{$v[1]}'";$name = $db->strquery($sql);if($v[1]==$uid){$name = "我";}echo "<div class='a'><span class='xm'>{$name}</span>发表动态:</div><div class='b'>{$v[2]}</div><div class='c'>发表动态时间:{$v[3]}</div><div class='d'><button class='btn btn-primary pl' data-toggle='modal' data-target='#myModal' code ='$v[0]'>评论</button><span><a href='scdt-cl.php?code={$v[0]}'>删除动态</a></span></div>";}?></div> <!--读取评论内容--> <div id="dqpl"><?php$sql = "select * from qqpinglun";$arr = $db->query($sql);foreach($arr as $v){$sql = "select * from qqdongtai where dtid='{$v[1]}'";$arr2 = $db->query($sql);foreach($arr2 as $m){//取发动态的姓名$sql = "select name from qqusers where uid='{$v[2]}'";$name = $db->strquery($sql);//若果是登录者评论则显示“我”if($v[2]==$uid){$name ="我";}//获取被评论者的姓名$sql = "select name from qqusers where uid=(select uid from qqdongtai where dtid='{$v[1]}')";$bpl = $db->strquery($sql);echo "<div class='a'><span class='xm'>{$name}</span>评论<span class='xm'>{$bpl}</span>的动态:{$m[2]}<div><div class='b'>{$v[3]}</div><div class='c'>发表评论时间:{$v[4]}</div><div class='d'><button class='btn btn-primary hf' ids ='{$v[0]}'>回复</button><span><a href='scpl-cl.php?code={$v[0]}'>删除评论</a></span></div>";}} ?> </div><!--读取回复的内容--> <div id="dqhf"> <?php$sql = "select * from qqhuifu where cid in (select cid from qqpinglun)";$arr = $db->query($sql);
// var_dump($arr);foreach($arr as $a){$sql = "select * from qqpinglun where cid='{$a[1]}'";$arr2 = $db->query($sql);
// var_dump($arr2);foreach($arr2 as $n){//取评论动态的姓名$sql = "select name from qqusers where uid='{$a[2]}'";$name = $db->strquery($sql);//若果是登录者评论则显示“我”if($a[2]==$uid){$name ="我";}//获取被回复评论的姓名$sql = "select name from qqusers where uid=(select uid from qqpinglun where cid='{$a[1]}')";$bpl = $db->strquery($sql);echo "<div class='a'><span class='xm'>{$name}</span>回复<span class='xm'>{$bpl}</span>的评论:{$n[3]}<div><div class='b'>{$a[3]}</div><div class='c'>回复时间:{$a[4]}</div><div class='d'><button class='btn btn-primary hf' ids ='{$a[0]}'>回复</button><span><a href='schf-cl.php?code={$a[0]}'>删除回复</a></span></div>"; }}?></div></div><!-- 评论模态框(Modal) --><div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="myModalLabel">评论</h4></div><textarea class="modal-body pldt" cols="80px"></textarea><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary" id="tjpl">提交评论</button></div></div></div></div> <!--模态框结束--> <!-- 回复模态框(Modal) --><div class="modal fade" id="mM" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button><h4 class="modal-title" id="myModalLabel">回复</h4></div><textarea class="modal-body hfpl" cols="80px"></textarea><div class="modal-footer"><button type="button" class="btn btn-default" data-dismiss="modal">关闭</button><button type="button" class="btn btn-primary" id="tjhf">提交回复</button></div></div></div></div> <!--模态框结束--> </div> </body>
</html><script>//ajax方法:刷新页面时将内容读取出来,并按发表时间读出来
// $.ajax({
// url:"sx-cl.php",
// dataType:"TEXT",
// success:function(data){
// var hang = data.trim().split("|");
// var str="";
// for(var i=0;i<hang.length;i++)
// {
// var lie = hang[i].split("^");
// str = str + "<div class='a'><span class='xm'>"+lie[1]+"</span>发表动态:</div><div class='b'><p>"+lie[2]+"</p><div class='c'>发表动态时间:"+lie[3]+"</div>";
// str =str+"<div id='d'><button class='btn btn-primary pl' data-toggle='modal' data-target='#myModal' code ='"+lie[0]+"'>评论</button><span><a href='del.php?code="+lie[0]+"'>删除动态</a></span></div>";
// }
// $("#nr").html(str);
// //点击“评论按钮”实现将code值传到模态框的“提交按钮”
// //为什么放在此处:因为ajax是异步的,如果不放在此处会加不上点击事件
// $(".pl").click(function(){
// code = $(this).attr("code"); //将评论的id重新赋值
// })
// }
// });
// //php方法: 当发表动态时,将动态内容写进数据库,并刷新页面$("#fb").click(function(){var dt= $(".xdt").val();var uid = $(".qid").attr("yh");$.ajax({url:"main-cl.php",data:{dt:dt},type:"POST",dataType:"TEXT",success:function(data){alert("发表动态成功!");window.location.href="main.php";} });}) //定义空字符串,容纳评论的id var code=""; $(".pl").click(function(){ code = $(this).attr("code"); //将评论的id重新赋值 }) //将评论写进数据库 $("#tjpl").click(function(){var plnr = $(".pldt").val();var plid = code; //取发动态的id
// alert(plnr);
// alert(plid); $.ajax({url:"pl-cl.php",data:{plnr:plnr,plid:plid},type:"POST",dataType:"TEXT",success:function(data){alert("评论成功!");window.location.href="main.php";} }); }) //定义空字符串,容纳回复评论的id var ids=""; $(".hf").click(function(){ ids = $(this).attr("ids"); //将评论的id重新赋值
// alert((ids)); $('#mM').modal('show'); }) //将回复评论写进数据库 $("#tjhf").click(function(){var hfnr = $(".hfpl").val();
// alert(hfnr);
// alert(ids);$.ajax({url:"hf-cl.php",data:{hfnr:hfnr,ids:ids},type:"POST",dataType:"TEXT",success:function(data){alert("回复成功!");window.location.href="main.php";} }); }) </script>
到此处为止,动态的发布、动态的评论、动态的回复、动态的删除都已经写完了,但是有个问题还还还没解决完,也就是回复的回复问题。请看下面的简图:
也就是回复表中有一部分是回复的评论,而剩余的部分则是回复的回复(有点绕)想看的就继续关注(下)未完待续~~~
先总结一下遇到的问题:
(1)为什么ajax输出的button添加不上点击事件?
因为ajax是异步ajax,所以要紧接其后。
(2)为什么取不到button的值------this
(3)一个php页面中,什么时候用ajax?什么时候用php?
在这个实例中,我用ajax将数据写进数据库;用php从数据库读取内容。(上一篇中,动态是用ajax读取的,在这一篇中,两种方法都有,详情请看全部代码)
(4)最后,逻辑清晰很关键,尤其是表与表之间的关联。
转载于:https://www.cnblogs.com/chenguanai/p/6911284.html
模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)...相关推荐
- 模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...
我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取 ...
- 模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(下)(核心部分)...
在前面的两篇随笔中我已经写完发布动态.评论动态.回复评论.以及删除评论等,那么在这节随笔中我们来看一下如何做出回复再回复,也就是循环回复的功能,在这节随笔中我会将完整的评论,回复评论,回复再回复功能展 ...
- php 朋友圈留言,php实例-PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...
我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么这个功能是如何实现的呢?下面小编给大家带来了实例代码,对PHP仿qq空间或朋友圈发布动态.评论动态.回复评论.删除动态或评论 ...
- php mysql仿微信朋友圈评论表设计_PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)...
我们大部分人都发过动态,想必都知道发动态.回复评论.删除动态的整个过程,那么作为初学者,要模仿这些功能有点复杂的,最起码表的关系得弄清楚~~ 先把思路理一下: (1)用户登录,用session读取当前 ...
- h5移动端,类似qq空间、朋友圈不规则图片显示适配功能
前言 最近再做个H5移动端社交类型项目的时候,里面有一块 类似朋友圈.qq空间展示的模块,开发的时候发现了一个问题,就是展示用户上传的图片,因为用户上传的图片 可能是相机拍的,可能是截图.可能是网上找 ...
- Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)
原址: http://blog.csdn.net/zhang3776813/article/details/52092591 /*** 仿微信朋友圈发布动态* 拍照或图库选择 * 压缩图片并保存**/ ...
- Android实现仿微信朋友圈发布动态(拍照、图库选择、照片压缩、显示、保存、缩略图、点击缩略图删除对应文件等)附源码
原创作品,转载请注明出处:http://blog.csdn.net/zhang3776813/article/details/52092591 最近项目需求中要用到类似微信朋友圈发布 ...
- 模仿QQ空间 网页设计
模仿QQ空间 网页设计 目的:1.通过模仿QQ空间,全自主写代码,熟悉网页设计的流程 2.熟练的掌握HTML.CSS.JS的应用 3.将在此过程中遇到的问题及其解决方法记录在此,以便取用. 开始: 一 ...
- android批量上传图片(模仿QQ空间和微信发表说说)
android批量上传图片(模仿QQ空间和微信发表说说) **请大家关注下我的微信公众号:哦哦猿 QQ群:552123831** 首先我们来看下效果 这个是启动方法:HttpPostUtil.save ...
最新文章
- 2202年了,AI还是不如猫!图灵奖得主Yann LeCun:3大挑战依然无解
- Android 内存管理 amp;Memory Leak amp; OOM 分析
- 简单型的弱电机房工程汇报方案
- boost::mpl模块实现index_of相关的测试程序
- [日志]做人与标点符号
- python缩进符错误_python – 如何修复Pylint“错误的缩进”和PEP8 E121?
- python中怎么写注释_Python中注释的写法
- MongoDB SpringBoot ObjectId序列化json为String
- office图标修复工具_超好用的流程图绘图工具你还没get吗?
- Matlab一张图上绘制两条曲线-2021-11-05
- 带你学微信小程序开发
- mixin 和 mixins 区别 ?
- iOS AFNetworking简介
- 职称评审被淘汰的诸多原因,可以赶紧为2022年评职称做准备
- 浏览器 弹广告 android,android手机 UC浏览器 时不时跳出广告 是不是中毒了
- SDIO wifi Marvell8801/Marvell88w8801 介绍(三) ---- Marvell8801/Marvell88w8801寄存器介绍
- python:numpy从数组中随机抽取元素
- Windows10下配置JavaCup、JFlex及运行JavaCup测试用例
- 通达OA2015-工作流表单导Excel模板后下载
- 机器学习数据集篇——KMNIST数据集
热门文章
- 【libobs】deps下的w32-pthreads动态库
- 【Android 插件化】VirtualApp 编译运行 ( VirtualApp 简介 | 配置 VirtualApp 编译环境 | 编译运行 VirtualApp 官方示例 )
- 面试过了,说要发offer,结果又增加一轮面试,是什么意思?
- python Turtle做一个小动画
- 安徽省宿州市谷歌卫星地图下载
- kali linux网络扫描~无线网络扫描
- 郭天祥单片机视频教程习题答案(一)
- thinkphp开发的erp系统旗舰版,模块齐全,功能强大
- Apriori算法是什么
- python scapy模块_关于scapy模块