模仿qq空間或朋友圈發布動態、評論動態、回復評論、刪除動態或評論的功能(上)


 

  

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

先把思路理一下:

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

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

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

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

 需要用到的表:

(1)用戶表:

(2)好友表

(3)動態表

 

 我先將代碼分塊解析,最后將主頁代碼完整附上,不然弄不清邏輯可能會有點混~~~~

 

第一步:實現簡單的登錄

(1)login.php頁面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			#body{
				height: 300px;
				width: 300px;
				margin: 200px auto;	
				
			}
		</style>
	</head>
	<body>
		<div 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>
		</div>
	</body>
</html>

  效果圖如下:

(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}</span>";
			?>

(2)

	<!--寫動態-->
		<div id="xdt">
			<p>發表動態:</p>		
			<textarea cols="100px" rows="5px" name="xdt" class="xdt"></textarea>
			<input type="submit" value="發表" id="fb" />
		
		</div>

  實現的效果:

第三步:顯示該用戶和他好友已經發表的動態信息,並按發表時間由近到遠顯示

重點是:

(1)顯示的動態只是登陸的該用戶和他好友的,非好友不顯示--------所以在處理頁面的sql語句要注意

(2)將讀取出來的信息按照發表時間讀取,發表時間最近的越在上邊

 首先:

<!--容納動態內容-->	
		<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"></div>
		</div>
		

其次:

//當發表動態時,將動態內容寫進數據庫,並刷新頁面
				$("#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";
					}	
				});
				})	

  對應的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 + "<div class='a'><span class='xm'>"+lie[1]+"</span>發表動態:</div><div class='b'>"+lie[2]+"</p><div class='c'>發表動態時間:"+lie[3]+"</div>";							   						   
						  str =str+"<div id='d'><button class='btn btn-primary' data-toggle='modal' data-target='#myModal'>評論</button><span><a href='del.php?code="+lie[0]+"'>刪除動態</a></span></div>";
						}
						$("#nr").html(str);
							
					}	
				});	

  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"  />
		<!--引入js包-->
		<script src="../jquery-3.2.0.js"></script>
		<!--引入bootstrap的js文件-->
	    <script src="../bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

(2)用模態框做評論效果:

<!-- 評論模態框(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" 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 qdhf">確定</button>
			            </div>
			        </div><!-- /.modal-content -->
			    </div><!-- /.modal -->
			</div>

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

 

 

點擊“評論”:

 

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

 主頁面全部代碼:

 

<!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 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>
		<div 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>";
			?>
			
		<!--寫動態-->
		<div 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>-->
		</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"></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" 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 qdhf">提交評論</button>
			            </div>
			        </div><!-- /.modal-content -->
			    </div><!-- /.modal -->
			</div>
		
		
		
		</div>	
	</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 + "<div class='a'><span class='xm'>"+lie[1]+"</span>發表動態:</div><div class='b'>"+lie[2]+"</p><div class='c'>發表動態時間:"+lie[3]+"</div>";							   						   
						  str =str+"<div id='d'><button class='btn btn-primary' data-toggle='modal' data-target='#myModal'>評論</button><span><a href='del.php?code="+lie[0]+"'>刪除動態</a></span></div>";
						}
						$("#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";
					}	
				});
				})													
	</script>

 

  

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM