首頁 > 後端開發 > php教程 > php實例-PHP仿qq空間或朋友圈發佈動態、評論動態、回覆評論、刪除動態或評論的功能(上)

php實例-PHP仿qq空間或朋友圈發佈動態、評論動態、回覆評論、刪除動態或評論的功能(上)

微波
發布: 2023-03-11 18:42:01
原創
2542 人瀏覽過

我們大部分人都發過動態,想必都知道發動態、回覆評論、刪除動態的整個過程,那麼這個功能是如何實現的呢?下面小編為大家帶來了實例程式碼,對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 = &#39;{$uid}&#39;";
$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=&#39;qid&#39; yh=&#39;{$uid}&#39;-->{$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: &#39;微软雅黑&#39;;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 (&#39;&#39;,&#39;{$uid}&#39;,&#39;{$dt}&#39;,&#39;{$date}&#39;)";
 $db--->query($sql,0);
 $sql = "select * from qqdongtai where uid=&#39;{$uid}&#39; or uid in (select uid from qqfriends where fname =(select name from qqusers where uid=&#39;{$uid}&#39;))";
 //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=&#39;{$uid}&#39; or uid in (select uid from qqfriends where fname =(select name from qqusers where uid=&#39;{$uid}&#39;)) 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=&#39;a&#39;><span class=&#39;xm&#39;>"+lie[1]+"</span>发表动态:</p><p class=&#39;b&#39;>"+lie[2]+"</p><p class=&#39;c&#39;>发表动态时间:"+lie[3]+"</p>"; str =str+"<p id=&#39;d&#39;><button class=&#39;btn btn-primary&#39; data-toggle=&#39;modal&#39; data-target=&#39;#myModal&#39;>评论</button><span><a href=&#39;del.php?code="+lie[0]+"&#39;>删除动态</a></span></p>"; } $("#nr").html(str); //点击回复 } }); //当发表动态时,将动态内容写进数据库,并刷新页面 $(&quot;#fb&quot;).click(function(){ var dt= $(&quot;.xdt&quot;).val(); var uid = $(&quot;.qid&quot;).attr(&quot;yh&quot;); $.ajax({ url:&quot;main-cl.php&quot;, data:{dt:dt}, type:&quot;POST&quot;, dataType:&quot;TEXT&quot;, success:function(data){ alert(&quot;发表动态成功!&quot;); window.location.href=&quot;main.php&quot; rel=&quot;external nofollow&quot; rel=&quot;external nofollow&quot; ; } }); }) </script>
登入後複製

以上是php實例-PHP仿qq空間或朋友圈發佈動態、評論動態、回覆評論、刪除動態或評論的功能(上)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板