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

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

Jun 28, 2017 pm 12:59 PM
php 發布

我們大部分人都發過動態,想必都知道發動態、回覆評論、刪除動態的整個過程,那麼這個功能是如何實現的呢?下面小編為大家帶來了實例程式碼,對PHP仿qq空間或朋友圈發布動態、評論動態、回覆評論、刪除動態或評論的功能感興趣的朋友,一起學習吧

我們大有些人都發過動態,想必都知道發動態、回覆評論、刪除動態的整個過程,那麼作為初學者,要模仿這些功能有點複雜的,最起碼表的關係得弄清楚~~

#先把思路理一下:

(1)使用者登入,用session讀取目前使用者----目的是:該用戶可以發表動態,重點是顯示該用戶好友及他自己發表的動態,並且按發表時間排序。

(2)做個發表動態框實現發表動態功能

(3)顯示該用戶和他好友已經發表對的動態信息,並按發表時間由近到遠顯示

(4)再每條動態後面做一個評論按鈕和刪除按鈕;實現對動態的評論,回復和刪除(斜體部分下一篇隨筆,不然太長了)

# 需要用到的表格:

(1)使用者表:

##(2)好友表

(3)動態表

# 我先將程式碼分塊解析,最後將首頁程式碼完整附上,不然弄不清邏輯可能會有點混~~~~

第一步:實作簡單的登入

(1 )login.php頁面

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<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存取用戶名)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

<!--?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」的字體(後面的姓名均用拼音顯示,不再讀取漢字的姓名)

1

2

3

4

5

6

7

8

9

10

11

<!--?php

   session_start();

   $uid = "";

   if(empty($_SESSION["uid"]))

   {

    header("location:login.php");

    exit;

   }

   $uid = $_SESSION["uid"];

   echo "欢迎:"."<span class='qid' yh='{$uid}'-->{$uid}";

   ?>

登入後複製

(2 )

1

2

3

4

5

6

<!--写动态-->

 <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)將讀取出來的資訊依照發表時間讀取,發表時間最近的越在上邊

首先:

1

2

3

4

5

<!--容纳动态内容-->

  <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>

登入後複製

      其次:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//当发表动态时,将动态内容写进数据库,并刷新页面

    $("#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頁面:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<!--?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;

?>

登入後複製

然後:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

//刷新页面时将内容读取出来,并按发表时间读出来

    $.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頁面:

1

2

3

4

5

6

7

8

9

10

11

12

<!--?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)引入檔案:

1

2

3

4

<!--引入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)用模態方塊做註解效果:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

<!-- 评论模态框(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>

登入後複製

  實現效果:(樣式比較簡陋)

點選「評論」:

到這一步基本上就能實現動態的發布與顯示好友動態了~~~~未完待續----評論與留言回覆見下一篇隨筆~~~

 主頁全部程式碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

<!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" rel="external nofollow" rel="external nofollow" />

  <!--引入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 royalblue;

    }

    .fdt{

    position: relative;

    min-height:300px;  

    width: 1000px;

    }

    /*谁发表动态样式*/

    .a{

    float: left;

    min-height:40px;

    width: 1000px;

    border-bottom: 2px solid brown;

    }

    .xm{

    font-size: 18px;

    color: brown;

    font-weight: bold;

    }

    /*发表动态样式内容*/

    .b{

    float: left;

    text-align: left;

    height:100px;

    line-height: 50px;

    }

    /*发表时间与回复删除样式*/

    .c{

    height:30px;

    width: 800px;

    float: left;

    font-size: 12px;

    text-align:right;

     }

    #d{

    height:30px;

    width: 200px;

    float: left;

    font-size: 15px;

    text-align:center;

     }

  </style>   

 </head>

 <body>

  <p id="body">

  <?php

   session_start();

   $uid = "";

   if(empty($_SESSION["uid"]))

   {

    header("location:login.php");

    exit;

   }

   $uid = $_SESSION["uid"];

   //这种方法可以取到uid。

   echo "欢迎:"."<span class='qid' yh='{$uid}'>{$uid}</span>";

   ?>

  <!--写动态-->

  <p id="xdt">

   <p>发表动态:</p>

   <!--<form method="post" action="main-cl.php">-->

   <textarea cols="100px" rows="5px" name="xdt" class="xdt"></textarea>

   <input type="submit" value="发表" id="fb" />

   <!--</form>-->

  </p>

  <!--容纳动态内容-->

  <p class="fdt">

   <p style="color: brown; font-family: '微软雅黑';font-weight: bold;font-size: 20px; margin-bottom: 20px; margin-top: 20px;">朋友动态:<p>

   <p id="nr"></p>

  </p>

  <!-- 评论模态框(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>

  </p>

 </body>

</html>

   <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);

      //点击回复

     }

    });

    //当发表动态时,将动态内容写进数据库,并刷新页面

    $(&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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

See all articles