你好!

創(chuàng)新互聯(lián)建站專注于津南網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供津南營銷型網(wǎng)站建設(shè),津南網(wǎng)站制作、津南網(wǎng)頁設(shè)計、津南網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造津南網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供津南網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
你可以將id放到被循環(huán)的一個div里面,設(shè)置成屬性,或者加入到隱藏域中,點贊時候,你就可以獲取到里面的值了,
如有疑問,請追問。
就應(yīng)該數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,安全!贊功能很簡單,既然是要對文章做功能,那么互動角色就是會員,考慮一個問題,會員需要不需要登錄才能點贊,如果不需要登錄也可以點贊,你需要有個匿名會員。
那么表方面三個:一個文章表,一個贊表,一個會員表
數(shù)據(jù)存儲:
會員點擊了贊,相應(yīng)的數(shù)據(jù)存到贊的表里面,這個三個表怎么關(guān)聯(lián)的呢?其核心是贊表,這個表里面存有文章的id號和會員的id號,形成關(guān)系。
數(shù)據(jù)讀取:
文章內(nèi)容讀取時候,根據(jù)文章的id,從贊的表調(diào)取相關(guān)數(shù)據(jù)統(tǒng)計,ok。
html:
head
script?src="common/js/jquery.js"?type="text/javascript"/script
script?language="JavaScript"?type="text/javascript"
jQuery(function($)?{
//這兩個是鼠標(biāo)放上去的效果
$(".zhan").hover(function(){
$(this).children("b").toggle();
});?
$(".cai").hover(function(){
? $(this).children("b").toggle();
});?
});?
/script
script?type="text/javascript"
!--這兩個點擊事件可以改進(jìn)的,因為事件問題,所以就弄了兩個點擊事件
$(document).ready(function(e)?{
//點贊(給力)
$('.zhan').click(function(){
var?zhan=$(this);
var?left?=?parseInt($(this).offset().left)+10,?top?=??parseInt($(this).offset().top)-10,?obj=$(this);
$(this).append('div?id="zhan"b+1\/b/\div');
$('#zhan').css({'position':'absolute','z-index':'1',?'color':'#C30','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
$(this).fadeIn('fast').remove();
var?Num?=?parseInt(obj.find('span').text());
Num++;
obj.find('span').text(Num);
});
$.ajax({
url:"ajax.php?action=zan",
type:"post",
data:"answer_id="+$(this).attr("alt"),
success:function(datas){
zhan.unbind('click');
zhan.parent().parent().siblings().children().children().unbind('click');
zhan.parent().parent().siblings().children().children().attr("class","evaluate-inner");
zhan.attr("class","evaluate-inner");
}
});
});
//踩(不給力)
$('.cai').click(function(){
var?cai=$(this);
var?left?=?parseInt($(this).offset().left)+10,?top?=??parseInt($(this).offset().top)-10,?obj=$(this);
$(this).append('div?id="cai"b-1\/b/\div');
$('#cai').css({'position':'absolute','z-index':'1',?'color':'#7DAAD5','left':left+'px','top':top+'px'}).animate({top:top-10,left:left+10},'slow',function(){
$(this).fadeIn('fast').remove();
var?Num?=?parseInt(obj.find('span').text());
Num--;
obj.find('span').text(Num);
});
$.ajax({
url:"ajax.php?action=cai",
type:"post",
data:"answer_id="+$(this).attr("alt"),
success:function(datas){
cai.unbind('click');
cai.parent().parent().siblings().children().children().unbind('click');
cai.parent().parent().siblings().children().children().attr("class","evaluate-inner");
cai.attr("class","evaluate-inner");
}
});
});
});
//--
/script
/head
body
!--給力開始--
span?data-evaluate="0"?id="evaluate-1908165795"?class="evaluate"?alog-action="qb-zan-btn"?span??class="evaluate-outer"
!-----判斷對應(yīng)的回答的id是否在自己創(chuàng)建的存儲贊和踩數(shù)據(jù)的php文件,如果贊或者踩存在一個的話就不能再單擊----
span?class="evaluate-inner?{if?$answer_datas.ans_id|in_array:$zan_list?or?$answer_datas.ans_id|in_array:$cai_list/}{else/}zhan{/if/}"?alt="{$answer_datas.ans_id/}"?b??style="display:none"?class="evaluate-tip?evaluate-num-fixed"給力/b?b??class="evaluate-num?evaluate-num-fixed"?span{$answer_datas.goods/}/span/b?/span?/span?/span
!--不給力開始--
span?data-evaluate="0"?id="evaluate-bad-1908165795"?class="evaluate?evaluate-bad"?alog-action="qb-evaluate-outer"?span?class="evaluate-outer"?span?class="evaluate-inner?{if?$answer_datas.ans_id|in_array:$zan_list?or?$answer_datas.ans_id|in_array:$cai_list/}{else/}cai{/if/}"?alt="{$answer_datas.ans_id/}"?b??style="display:?none;"?class="evaluate-tip?evaluate-num-fixed"不給力/b?b??class="evaluate-num?evaluate-num-fixed"?style="display:?inline-block;"span{$answer_datas.bads/}/span/b?/span?/span?/span
/div
/div
!--評論回答開始--
/body
/html
php
?php
$action=$_GET['action'];//獲取get方式傳過來的action
require_once("array/ovovsys_zan.php");
switch($action){
case?'detail':
/*****贊開始****/
$zan_list?=?json_decode(str_replace("'",'"',$zan_json),true);
$zan_lists=array();
foreach($zan_list?as?$key=$value){
if($value['uid']==$uid){
? $zan_lists[]=$value['answer_id'];
}
}
$smarty-assign('zan_list',$zan_lists);//查詢當(dāng)前登錄的會員的uid對應(yīng)的點贊的回答
/*****贊結(jié)束****/
/*****踩開始****/
$cai_list?=?json_decode(str_replace("'",'"',$cai_json),true);
$cai_lists=array();
foreach($cai_list?as?$key=$value){
if($value['uid']==$uid){
? $cai_lists[]=$value['answer_id'];
}
}
$smarty-assign('cai_list',$cai_lists);//查詢當(dāng)前登錄的會員的uid對應(yīng)的踩的回答
/*****踩結(jié)束****/
$smarty-display('自己的靜態(tài)頁面');
exit();
break;
}
?
ajax
?php?
require_once("array/ovovsys_zan.php");//這里引用array文件夾中的數(shù)組文件
$action=trim($_GET['action']);
if(empty($action)){
echo?'font?color=red參數(shù)錯誤!/font';exit();
}
switch($action){
?case?'zan'://點贊(給力)
//$zan_json是數(shù)組文件中設(shè)置的數(shù)組變量,存的是json數(shù)據(jù)----1
$zan_array?=?json_decode(str_replace("'",'"',$zan_json),true);
//獲取當(dāng)前的會員的uid-----2
$user_answer['uid']=$uid;
//獲取對應(yīng)的贊的回答的id----2
$user_answer['answer_id']=$_POST['answer_id'];
//將會員的uid和答案的id一塊的數(shù)組放到指定的數(shù)組中----3
$zan_array[]=$user_answer;
$config_path?=?'shuzu/ovovsys_zan.php';
if(!file_exists($config_path)){
$Base-ErrorMsg('文件錯誤:shuzu/ovovsys_zan.php?不存在!');exit();
}
//將指定的數(shù)組轉(zhuǎn)換成json數(shù)據(jù),并且將雙引號轉(zhuǎn)換成單引號,不然放到數(shù)組文件中后會出錯----4
$zan_new_json?=?str_replace('"',"'",json_encode($zan_array));
$fp?=?@fopen($config_path,'r+');
if(!$content?=?@fread($fp,filesize($config_path))){
$Base-ErrorMsg('無法讀取shuzu/ovovsys_zan.php文件!');exit();
}
//執(zhí)行替換,將數(shù)組文件中對應(yīng)的json數(shù)據(jù)----5
$content?=?str_replace("\$zan_json?=?\"{$zan_json}\"","\$zan_json?=?\"{$zan_new_json}\"",$content);
$fp?=?@fopen($config_path,'w+');?
@fwrite($fp,$content);?
//修改對應(yīng)的數(shù)據(jù)表中的數(shù)據(jù)----5
$Db-ThisQuery("update?`".$db_prefix."ask_answers`?set?`goods`=`goods`+1?where?`ans_id`=".$user_answer['answer_id']."");
exit();
break;
?case?'cai'://踩(不給力)
$cai_array?=?json_decode(str_replace("'",'"',$cai_json),true);
$user_answer['uid']=$uid;
$user_answer['answer_id']=$_POST['answer_id'];
$cai_array[]=$user_answer;
$config_path?=?'shuzu/ovovsys_zan.php';
if(!file_exists($config_path)){
$Base-ErrorMsg('文件錯誤:shuzu/ovovsys_zan.php?不存在!');exit();
}
$cai_new_json?=?str_replace('"',"'",json_encode($cai_array));
$fp?=?@fopen($config_path,'r+');
if(!$content?=?@fread($fp,filesize($config_path))){
$Base-ErrorMsg('無法讀取shuzu/ovovsys_zan.php文件!');exit();
}
$content?=?str_replace("\$cai_json?=?\"{$cai_json}\"","\$cai_json?=?\"{$cai_new_json}\"",$content);
$fp?=?@fopen($config_path,'w+');?
@fwrite($fp,$content);?
$Db-ThisQuery("update?`".$db_prefix."ask_answers`?set?`bads`=`bads`-1?where?`ans_id`=".$user_answer['answer_id']."");
exit();
break;
}
?
對應(yīng)的數(shù)據(jù)文件(因為創(chuàng)建數(shù)據(jù)庫時沒有創(chuàng)建踩和贊的再斷,所以這里就用php文件存變量的方式保存了一下答案對應(yīng)的贊和踩的數(shù)據(jù),其中包含用戶的id和答案的id):
?php
$zan_json?=?"";
$cai_json?=?"";
?
你沒看錯,就是兩個變量
數(shù)據(jù)庫設(shè)計
先準(zhǔn)備兩張表,pic表保存的是圖片信息,包括圖片對應(yīng)的名稱、路徑以及圖片“贊”總數(shù),pic_ip則記錄用戶點擊贊后的IP數(shù)據(jù)。
CREATE?TABLE?IF?NOT?EXISTS?`pic`?(?
`id`?int(11)?NOT?NULL?AUTO_INCREMENT,?
`pic_name`?varchar(60)?NOT?NULL,?
`pic_url`?varchar(60)?NOT?NULL,?
`love`?int(11)?NOT?NULL?DEFAULT?'0',?
PRIMARY?KEY?(`id`)?
)?ENGINE=MyISAM??DEFAULT?CHARSET=utf8;?
CREATE?TABLE?IF?NOT?EXISTS?`pic_ip`?(?
`id`?int(11)?NOT?NULL?AUTO_INCREMENT,?
`pic_id`?int(11)?NOT?NULL,?
`ip`?varchar(40)?NOT?NULL,?
PRIMARY?KEY?(`id`)?
)?ENGINE=MyISAM??DEFAULT?CHARSET=utf8
index.php
在index.php中,我們通過PHP讀取pic表中的圖片信息并展示出來,結(jié)合CSS,提升頁面展示效果。
?php?
include_once("connect.php");?
$sql?=?mysql_query("select?*?from?pic");?
while($row=mysql_fetch_array($sql)){?
$pic_id?=?$row['id'];?
$pic_name?=?$row['pic_name'];?
$pic_url?=?$row['pic_url'];?
$love?=?$row['love'];?
??
liimg?src="images/?php?echo?$pic_url;?"?alt="?php?echo?$pic_name;?"pa?href="#"??
title="贊"class="img_on"?rel="?php?echo?$pic_id;?"?php?echo?$love;?/a/p/li?
?php?}?
CSS中,我們將定義鼠標(biāo)滑向和離開紅心按鈕的動態(tài)效果,并定位按鈕的位置。
.list{width:760px;?margin:20px?auto}?
.list?li{float:left;?width:360px;?height:280px;?margin:10px;?position:relative}?
.list?li?p{position:absolute;?top:0;?left:0;?width:360px;?height:24px;?line-height:24px;??
background:#000;?opacity:.8;filter:alpha(opacity=80);}?
.list?li?p?a{padding-left:30px;?height:24px;?background:url(images/heart.png)?no-repeat??
4px?-1px;color:#fff;?font-weight:bold;?font-size:14px}?
.list?li?p?a:hover{background-position:4px?-25px;text-decoration:none}
jQuery代碼
當(dāng)用戶點擊自己喜歡的圖片上的紅心按鈕時,向后臺love.php發(fā)送ajax請求,請求響應(yīng)成功后,更新原有的數(shù)值
$(function(){?
$("p?a").click(function(){?
var?love?=?$(this);?
var?id?=?love.attr("rel");?//對應(yīng)id?
love.fadeOut(300);?//漸隱效果?
$.ajax({?
type:"POST",?
url:"love.php",?
data:"id="+id,?
cache:false,?//不緩存此頁面?
success:function(data){?
love.html(data);?
love.fadeIn(300);?//漸顯效果?
}?
});?
return?false;?
});?
});
love.php
后臺love.php接收前端的ajax請求,根據(jù)提交的圖片id值,查找IP表中是否已有該用戶ip的點擊記錄,如果有則告訴用戶已“贊過了”,反之,則進(jìn)行一下操作:
1、更新圖片表中對應(yīng)的圖片love字段值,將數(shù)值加1。
2、將該用戶IP信息寫入到pic_ip表中,用以防止用戶重復(fù)點擊。
3、獲取更新后的贊值,即贊該圖片的用戶總數(shù),并將該總數(shù)輸出給前端頁面。
include_once("connect.php");?//連接數(shù)據(jù)庫?
$ip?=?get_client_ip();?//獲取用戶IP?
$id?=?$_POST['id'];?
if(!isset($id)?||?empty($id))?exit;?
$ip_sql=mysql_query("select?ip?from?pic_ip?where?pic_id='$id'?and?ip='$ip'");?
$count=mysql_num_rows($ip_sql);?
if($count==0){?//如果沒有記錄?
$sql?=?"update?pic?set?love=love+1?where?id='$id'";?//更新數(shù)據(jù)?
mysql_query(?$sql);?
$sql_in?=?"insert?into?pic_ip?(pic_id,ip)?values?('$id','$ip')";?//寫入數(shù)據(jù)?
mysql_query(?$sql_in);?
$result?=?mysql_query("select?love?from?pic?where?id='$id'");?
$row?=?mysql_fetch_array($result);?
$love?=?$row['love'];?//獲取贊數(shù)值?
echo?$love;?
}else{?
echo?"贊過了..";?
}
我上傳的附件中 數(shù)據(jù)庫SQL 你可以直接建立test 數(shù)據(jù)庫UTF8編碼的,然后把SQL文件導(dǎo)入進(jìn)去。修改一下connect.php中數(shù)據(jù)庫的連接信息即可。
名稱欄目:php大數(shù)據(jù)點贊功能,php大數(shù)據(jù)點贊功能在哪
文章來源:http://chinadenli.net/article37/dsgossj.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、建站公司、企業(yè)建站、商城網(wǎng)站、微信小程序、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)