Facebook喜歡使用PHP,MySQL和Jquery的反應。

就在幾天前,Facebook推出了Reactions,這是Like按鈕的擴展。我成功地在我的WallScript 8,構建自己的社交網絡中實現了相同的功能這是使用PHP,Jquery和PDO MySQL實現Reactions的快速簡便方法。這是實施反應的基本思路。希望你喜歡新的Reactions for Like按鈕..!快速瀏覽一下現場演示。


Facebook喜歡使用PHP,MySQL和Jquery的反應。



下載腳本    現場演示

數據庫設計
要構建像反應系統這樣的消息,您必須創建四個表,例如UsersMessages,Message_Like  和Reactions下面的圖像是使用Mysql Workbench工具生成的。

用戶表

用戶表包含所有用戶註冊詳細信息。 

CREATE TABLE` 用戶 `(
UID `詮釋NOT NULL PRIMARY KEY AUTO_INCREMENT
用戶名 `VARCHAR(25)NOT NULL UNIQUE,
密碼 'VARCHAR(50)NOT NULL,
電子郵件 'VARCHAR(100)NOT NULL,
 ` varchar(100)NOT NULL,
profile_pic`varchar200)NOT NULL,
);


數據將以下列方式存儲,這裏是帶有PDO和HASH加密的密碼數據PHP登錄腳本

用戶

Facebook反應使用PHP,MySQL和Jquery。



消息表

該表包含用戶狀態消息數據。這裏uid_fk   是引用users.uid的FOREIGN KEY

CREATE TABLE` 消息 `(
MSG_ID `INT(11)NOT NULL PRIMARY KEY AUTO_INCREMENT
消息 `VARCHAR(200)NOT NULL,
uid_fk `INT(11)NOT NULL,
LIKE_COUNT `INT(11)DEFAULT NULL,
創建 `int(11)DEFAULT NULL,
FOREIGN KEY(uid_fk)REFERENCES users(uid) ); 


消息

Facebook反應使用PHP,MySQL和Jquery。



反應表

該表包含反應數據名稱。 

CREATE TABLE 反應
RID ' INT NOT NULL  PRIMARY KEY  AUTO_INCREMENT
名稱 ' VARCHAR(45)NOT NULL 
);


反應

Facebook反應使用PHP,MySQL和Jquery。



消息像表

包含所有用戶消息喜歡的關係數據。這裏uid_fk是FOREIGN KEY to REFERENCES users.uid,r id_fk  是FOREIGN KEY to REFERENCES  reactions.rid msg_id_fk是FOREIGN KEY to REFERENCES messages.msg_id

CREATE TABLE` message_like `(
like_id `INT(11)NOT NULL PRIMARY KEY AUTO_INCREMENT
msg_id_fk `INT(11),
uid_fk `INT(11)NOT NULL,
創建 `INT(11)NOT NULL,
rid_fk ` int(11)NOT NULL,
FOREIGN KEY(uid_fk)REFERENCES 用戶(uid),
FOREIGN KEY(msg_id_fk)REFERENCES 消息(msg_id),
FOREIGN KEY  (rid_fk)  REFERENCES  reaction(rid)
);


message_like

Facebook反應使用PHP,MySQL和Jquery。



JavaScript庫
您必須包含以下JavaScript庫。我已經爲反應彈出修改了jquery tooltipster插件。

<link rel =“ stylesheet ”type =“ text / css ”href =“ css / tooltipsterReaction.css ”> 
<link rel =“ stylesheet ”type =“ text / css ”href =“ css / tipsy.css ”> 
<script src =“ js / jquery.min.js ”> </ script> 
<script src =“ js / jquery.livequery.js ”> </ script> 
<script src =“ js / jquery.tooltipsterReaction.js ”> </ script> 
<script src =“ js / jquery.tipsy.js ”> </ script>


Jquery代碼
將反應工具提示應用於錨標記。反應名稱工具提示的Tipsy插件。

$(文件)。準備函數()

//用於反應圖標黑色提示。
$( “ .likeTypeAction ”)。醉意({比重: 'S',住: }); 

//反應鼠標懸停彈出
$(“ 反應 ”) 。的liveQuery函數()

//反應HTML內容
變種 reactionsCode =” <跨度類= “likeTypeAction”原始標題= “ 喜歡”數據-反應=“ 1 ”> <I類=“ likeIcon likeType”> </ I > </ span> '+ 
<“data-reaction =”2“> <i class =” loveIcon likeType “> </ i> </ span> '+ <span class =”likeTypeAction“original-title =” Haha “data-reaction =”3“ > <i class =“ hahaIcon likeType ”> </ i> </ span> '+ <span class =“likeTypeAction”original-title =“ Wow ”data-reaction =“4”> <i class =“ wowIcon likeType “> </ i> </ span> '+ <span class =”likeTypeAction“original-title =” Cool “data-reaction =“5”> <i class =“ coolIcon likeType ”> </ i> </ span> '+ <span class =“likeTypeAction”original-title =“ 



true interactive:true content:$(reactionsCode), }); }); $(” 










body “)。on(” click “,”。likeTypeAction “,function()

....... 
.......


$(” body “)。on(” click “,”。unLike “,function()

....... 
.......

}); 
// HTML代碼
<a href =”#“class =” reaction “id =” like 203 “rel =” like “> 
<i class =” likeIconDefault “> </ i>喜歡</a>


CSS代碼
我實現了圖像精靈。

likeType { 
background-image:url('../ images / like_types.png'); 
背景大小:100%; 
顯示:塊; 
身高:40px; 
圖像渲染:清晰邊緣; 
line-height:1; 
寬度:40px; 
遊標:指針; 

angryIcon { 
background-position:0px 0px; 

confusedIcon { 
background-position:0px -40px; 

hahaIcon { 
background-position:0px -80px; 

likeIcon { 
background-position:0px -120px 

loveIcon {
background-position:0px -160px; 

sadIcon { 
background-position:0px -200px; 

wowIcon { 
background-position:0px -240px; 

coolIcon { 
background-position:0px -280px; 

.likeTypeAction {float:left; 保證金權利:8px; cursor:pointer;}


像Ajax一樣
包含javascript代碼。$(“body”)。on('click','。likeTypeAction',function(){} - 這裏likeTypeAction是反應圖標標籤的類名。使用$(this).parent()。parent()。 attr(“id”)調用圖標標記消息ID值。

/ * Reaction * /
$(“ body ”)。( “ 點擊 ”, “ .likeTypeAction ”,函數()

VAR reactionType = $(本)。ATTR( “數據-反應”); 
VAR  。reactionName = $(本)ATTR( “原始標題”); 
無功  rel = $(this).parent()。parent()。attr(“rel”); 
var  x = $(this) .parent()。parent()。attr(“id”); 
var  sid = x。分裂(“反應”);


VAR  htmlData =” <I類=“” + reactionName。toLowerCase()+ 'IconSmall likeTypeSmall </ i>的”> '+ reactionName +' </A>'; 
var  dataString =' msg_id = '+ msg_id +' &rid = '+ reactionType; 

$ .ajax({ 
type:“ POST ”,
url:' ajaxReaction.php ',
data:dataString,
cache:false
beforeSend:function(){},
success:function(html)
if(parseInt(html)== 1) { $(“ #like ” + MSG_ID)。html(htmlData)。


removeClass(' reaction ')。removeClass(' tooltipstered ')。addClass(' unLike ')。attr(' rel ',' 不同 '); 
$( “#” + X)。hide(); 


}); 

返回 虛假 ; 
});


與Ajax不同,
包含javascript代碼。$(“body”)。on('click','。unLike',function(){} - 這裏unLike是不同的錨標籤的類名。使用$(this).attr(“id”)調用錨標記消息ID值。

$(“ 身體 ”)。( “ 點擊 ”, “ 不像 ”,函數()

VAR  reactionType = '1'; 
變種  X = $(本)。ATTR( “ID”); 
VAR  。SID = X 分裂( “像”); 
無功  msg_id = sid [1]; 
var  dataString =' msg_id = '+ msg_id +' &rid = '+ reactionType; 
var  htmlData =' <i class =“likeIconDefault”> </ i>贊</a> '; 
$ .ajax ({ 
type:“ POST ”,
url:'

cache:false,
beforeSend:function(){},
success:function(html)

if(parseInt(html)== 2)
$(“ #like ”+ msg_id)。html(htmlData)。addClass(' 反應 ')。addClass(' tooltipstered ')。removeClass( ' 不像 '); }); 返回虛假 ; });








index.php
包含PHP和HTML代碼,通過調用$ feed-> newsFeed()顯示所有用戶更新;

<?PHP的
include_once '的config.php '; 
$ feedData = $ feed-> newsFeed(); 
?>
<!DOCTYPE html> 
<html> 
<head> 
<! - JavaScript CSS - > 
<link rel =“ stylesheet ”type =“ text / css ”href =“ css / tooltipsterReaction.css ”> 
<link rel = “ stylesheet ”type =“ text / css ”href =“ css / tipsy.css ”> 
<link rel =“ stylesheet ”type =“ text / css ”href =“ css / app.css ”>

js / jquery.livequery.js “> </ script> 
<script src =” js / jquery.tooltipsterReaction.js “> </ script> 
<script src =” js / jquery.tipsy.js “> </ script> 
< script src =“ js / app.js ”> </ script> 
<! - JavaScript CSS End - > 
</ head> 
<body> 
<?php
foreach($ feedData as $ data)

?>
<div class = “messageBody”id =“msg <?php  echo $ data - > msg_id; ?> “> <img src =” <?php  echo $ data - > 用戶照片; ?> “class =”messageImg“/> <b> <a href =” 
  
<?php  echo BASE_URL $ data - > username ?> “> <?php  echo $ data - > name ?></a> </ b> <?php  echo $ data - > message ;?> <div class =”messageFooter“> <a href =”# “class =”reaction“id =”like <?php  echo $ data - > msg_id ?>“rel =”喜歡“> <i class =”likeIconDefault“> </ i>喜歡</a> </ div> </ div>  
 

 







config.php
數據庫配置文件,修改用戶名,密碼和數據庫值。爲PHP 啓用PDO擴展

<?php
session_start(); 
define(' DB_SERVER ','localhost'); 
define(' DB_USERNAME ','username'); 
define(' DB_PASSWORD ','password'); 
define(' DB_DATABASE ',' Reations '); 
define(“ BASE_URL ”,“http://www.yourwebsite.com/”); 

function getDB()
{
$ dbhost =  DB_SERVER ; 
$ dbuser =  DB_USERNAME ; 
$  dbpass = DB_PASSWORD ; 
$ dbname =  DB_DATABASE ;
新的 PDO(“ mysql:host = $ dbhost ; dbname = $ dbname”,$ dbuser,$ dbpass); 
$ dbConnection-> exec(“ set names utf8 ”); // utf-8支持
$ dbConnection-> setAttribute(PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION); 
return $ dbConnection; 


include_once ' feed.php '; 
$ feed = new feed(); 
?>



ajaxReaction.php
用於更新用戶反應的Ajax post文件。

<?PHP的
include_once '的config.php '; 
$ feedData = $ feed-> newsFeed(); 
$ sessions_uid = $ _SESSION ['uid']; 
if($ _POST ['msg_id'] && $ _POST ['rid'] && $ session_uid> 0)
{
$ msg_id = $ _POST ['msg_id']; 
$ rid = $ _POST ['rid']; 
$ data = $ feed- > userReaction($ session_uid,$ msg_id,$ rid); 
echo $ data; 
}
?>



feed.php
包含簡單的PHP代碼來更新用戶反應數據,這將使所有用戶更新。您必須根據您的會話ID進行修改。

<?php
class feed
{
/ * News Feed Data * / 
public function newsFeed()
{
$ db = getDB(); 
$ stmt = $ db-> prepare(“ SELECT U.uid,U.name,U.username,U.profile_pic,M.msg_id,M.message,M.created,M.like_count FROM users U,messages M WHERE U .uid = M.uid_fk ORDER BY M.msg_id DESC “); 
$ stmt-> execute(); 
$ data = $ stmt-> fetchAll(PDO :: FETCH_OBJ); 
$ db = null; 
返回 $ data; 
}

/ *用戶反應檢查* / 
公共 職能 reactionCheck($ UID,$ MSG_ID)

$ db = getDB(); 
$ stmt = $ db-> prepare(“ SELECT L.like_id,R.name FROM message_like L,reactions R WHERE R.rid = L.rid_fk AND L.uid_fk = :uid AND L.msg_id_fk = :msg_id ”); 
$ stmt-> bindValue(':uid',$ uid,PDO :: PARAM_INT); 
$ stmt-> bindValue(':msg_id',$ msg_id,PDO :: PARAM_INT); 
$ stmt-> execute(); 
$ data = $ stmt-> fetch(PDO :: FETCH_OBJ); 
$ db = null; 
返回 $ data; 
/ *新聞Feed數據* / 公共功能


userReaction($ uid,$ msg_id,$ rid)

$ db = getDB(); 
$ stmt1 = $ db-> prepare(“ SELECT like_id FROM message_like WHERE uid_fk =:uid AND msg_id_fk = :msg_id ”); 
$ stmt1-> bindValue(':uid',$ uid,  PDO :: PARAM_INT); 
$ stmt1-> bindValue(':msg_id',$ msg_id,  PDO :: PARAM_INT); 
$ stmt1-> execute(); 
$ count = $ stmt1-> rowCount(); 

if($ count> 0)

$ stmt = $ db-> prepare(“ DELETE FROM message_like WHERE uid_fk =:uid AND msg_id_fk = “); 
$ stmt-> bindValue(':uid',$ uid,  PDO :: PARAM_INT); 
$ stmt-> bindValue(':msg_id',$ msg_id,  PDO :: PARAM_INT); 
$ stmt-> execute() ; 
$ db = null; 
返回 2; 

else 

$ stmt = $ db-> prepare(“ INSERT INTO message_like(msg_id_fk,uid_fk,created,rid_fk)VALUES(:msg_id ,:uid ,:created ,:rid)”) ; 
$ stmt-> bindValue(':uid',$ uid,  PDO :: PARAM_INT); 
$ stmt->bindValue(':msg_id',$ msg_id,  PDO :: PARAM_INT); 
$ created = time(); 
$ stmt-> bindValue(':created',$ created,  PDO :: PARAM_INT); 
$ stmt-> bindValue(':rid',$ rid,  PDO :: PARAM_INT); 
$ stmt-> execute(); 
$ db = null; 
返回 1; 




?>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章