我們大部分人都發過動態,想必都知道發動態、回覆評論、刪除動態的整個過程,那麼這個功能是如何實現的呢?下面小編為大家帶來了實例程式碼,對PHP仿qq空間或朋友圈發布動態、評論動態、回覆評論、刪除動態或評論的功能感興趣的朋友,一起學習吧
我們大有些人都發過動態,想必都知道發動態、回覆評論、刪除動態的整個過程,那麼作為初學者,要模仿這些功能有點複雜的,最起碼表的關係得弄清楚~~
#先把思路理一下:
(1)使用者登入,用session讀取目前使用者----目的是:該用戶可以發表動態,重點是顯示該用戶好友及他自己發表的動態,並且按發表時間排序。
(2)做個發表動態框實現發表動態功能
(3)顯示該用戶和他好友已經發表對的動態信息,並按發表時間由近到遠顯示
(4)再每條動態後面做一個評論按鈕和刪除按鈕;實現對動態的評論,回復和刪除(斜體部分下一篇隨筆,不然太長了)
# 需要用到的表格:
(1)使用者表:
##(2)好友表 (3)動態表 # 我先將程式碼分塊解析,最後將首頁程式碼完整附上,不然弄不清邏輯可能會有點混~~~~第一步:實作簡單的登入
(1 )login.php頁面
<meta charset="UTF-8"> <title></title> <style> #body{ height: 300px; width: 300px; margin: 200px auto; } </style> <p id="body"> <form method="post" action="login-cl.php"> 用户名:<input type="text" name="uid"><br><br> 密码:<input type="password" name="pwd"><br> <input type="submit" value="登录"> </form> </p>效果圖如下: (2)login-cl.php頁面:(用session存取用戶名)
<!--?php session_start(); $uid = $_POST["uid"]; $pwd = $_POST["pwd"]; require "../DB.class.php"; $db = new DB(); $sql = "select pwd from users where uid = '{$uid}'"; $mm = $db--->strquery($sql); var_dump($mm); if($mm == $pwd && !empty($pwd)) { $_SESSION["uid"] = $uid; header("location:main.php"); } else{ echo "用户名或密码错误!"; } ?>
第二步:登入之後,版面配置發布動態方塊
(1)發布前,先判斷session是否已經取到值,如果沒有,回到登陸頁面,如果取到值則顯示「歡迎,xx」的字體(後面的姓名均用拼音顯示,不再讀取漢字的姓名)<!--?php session_start(); $uid = ""; if(empty($_SESSION["uid"])) { header("location:login.php"); exit; } $uid = $_SESSION["uid"]; echo "欢迎:"."<span class='qid' yh='{$uid}'-->{$uid}"; ?>(2 )
<!--写动态--> <p id="xdt"> <p>发表动态:</p> <textarea cols="100px" rows="5px" name="xdt" class="xdt"></textarea> <input type="submit" value="发表" id="fb"> </p>實現的效果: #第三步:顯示該用戶和他好友已經發表的動態信息,並按發表時間由近到遠顯示
重點是:
(1)顯示的動態只是登陸的該用戶和他好友的,非好友不顯示- -------所以在處理頁面的sql語句要注意(2)將讀取出來的資訊依照發表時間讀取,發表時間最近的越在上邊首先:<!--容纳动态内容--> <p class="fdt"> <p style="color: brown; font-family: '微软雅黑';font-weight: bold;font-size: 20px; margin-bottom: 20px; margin-top: 20px;">朋友动态:</p><p> </p><p id="nr"></p> </p>其次:
//当发表动态时,将动态内容写进数据库,并刷新页面 $("#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" rel="external nofollow" rel="external nofollow" ; } }); })對應的main-cl.php頁面:
<!--?php session_start(); $uid = $_SESSION["uid"]; $dt = $_POST["dt"]; $date = date ("Y-m-d H:i:s"); require "../DB.class.php"; $db = new DB(); $sql = "insert into qqdongtai values ('','{$uid}','{$dt}','{$date}')"; $db--->query($sql,0); $sql = "select * from qqdongtai where uid='{$uid}' or uid in (select uid from qqfriends where fname =(select name from qqusers where uid='{$uid}'))"; //echo $sql; $arr = $db->strquery($sql); echo $arr; ?>然後:
//刷新页面时将内容读取出来,并按发表时间读出来 $.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" +="" "<p="" class="a"><span class="xm">"+lie[1]+"</span>发表动态:<p class="b">"+lie[2]+"<p></p><p class="c">发表动态时间:"+lie[3]+"</p>"; str =str+"<p id="d"><button class="btn btn-primary" data-toggle="modal" data-target="#myModal">评论</button><span><a href="del.php?code=" rel="external nofollow" +lie[0]+"">删除动态</a></span></p>"; } $("#nr").html(str); } }); </p></hang.length;i++)>sx-cl.php頁面:
<!--?php session_start(); $uid = $_SESSION["uid"]; $date = date ("Y-m-d H:i:s"); require "../DB.class.php"; $db = new DB(); //选取该用户和该用户好友的动态,并按时间顺训读出 $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--->strquery($sql); echo $arr; ?>由上面可知:登入使用者是lisi,由好友表可以知道,lisi的好友只有zhangsan和zhaoliu,那麼顯示的動態只能有lisi,zhangsan,和zhaoliu的。現在看一下效果及資料庫~~~~
#第四個步驟:用bootstrap加入模態方塊用來評論動態
(1)引入檔案:<!--引入bootstrap的css文件--> <link type="text/css" rel="stylesheet" href="../bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="external nofollow" rel="external nofollow" > <!--引入js包--> <!--引入bootstrap的js文件-->(2)用模態方塊做註解效果:
<!-- 评论模态框(Modal) --> <p class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <p class="modal-dialog"> <p class="modal-content"> <p class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">评论</h4> </p> <textarea class="modal-body" cols="80px"></textarea> <p class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button> <button type="button" class="btn btn-primary qdhf">确定</button> </p> </p><!-- /.modal-content --> </p><!-- /.modal --> </p>實現效果:(樣式比較簡陋) 點選「評論」: 到這一步基本上就能實現動態的發布與顯示好友動態了~~~~未完待續----評論與留言回覆見下一篇隨筆~~~ 主頁全部程式碼:
{$uid}"; ?>
发表动态:
朋友动态:
评论
<script> //刷新页面时将内容读取出来,并按发表时间读出来 $.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 + "<p class='a'><span class='xm'>"+lie[1]+"</span>发表动态:</p><p class='b'>"+lie[2]+"</p><p class='c'>发表动态时间:"+lie[3]+"</p>"; str =str+"<p id='d'><button class='btn btn-primary' data-toggle='modal' data-target='#myModal'>评论</button><span><a href='del.php?code="+lie[0]+"'>删除动态</a></span></p>"; } $("#nr").html(str); //点击回复 } }); //当发表动态时,将动态内容写进数据库,并刷新页面 $("#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" rel="external nofollow" rel="external nofollow" ; } }); }) </script>
以上是php實例-PHP仿qq空間或朋友圈發佈動態、評論動態、回覆評論、刪除動態或評論的功能(上)的詳細內容。更多資訊請關注PHP中文網其他相關文章!