真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

php數(shù)據(jù)庫(kù)點(diǎn)贊功能 php點(diǎn)贊的代碼

php用數(shù)據(jù)庫(kù)怎么實(shí)現(xiàn)贊功能?

就應(yīng)該數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)存儲(chǔ),安全!贊功能很簡(jiǎn)單,既然是要對(duì)文章做功能,那么互動(dòng)角色就是會(huì)員,考慮一個(gè)問題,會(huì)員需要不需要登錄才能點(diǎn)贊,如果不需要登錄也可以點(diǎn)贊,你需要有個(gè)匿名會(huì)員。

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了夏河免費(fèi)建站歡迎大家使用!

那么表方面三個(gè):一個(gè)文章表,一個(gè)贊表,一個(gè)會(huì)員表

數(shù)據(jù)存儲(chǔ):

會(huì)員點(diǎn)擊了贊,相應(yīng)的數(shù)據(jù)存到贊的表里面,這個(gè)三個(gè)表怎么關(guān)聯(lián)的呢?其核心是贊表,這個(gè)表里面存有文章的id號(hào)和會(huì)員的id號(hào),形成關(guān)系。

數(shù)據(jù)讀取:

文章內(nèi)容讀取時(shí)候,根據(jù)文章的id,從贊的表調(diào)取相關(guān)數(shù)據(jù)統(tǒng)計(jì),ok。

Php點(diǎn)贊效果的制作代碼+解析

數(shù)據(jù)庫(kù)設(shè)計(jì)

先準(zhǔn)備兩張表,pic表保存的是圖片信息,包括圖片對(duì)應(yīng)的名稱、路徑以及圖片“贊”總數(shù),pic_ip則記錄用戶點(diǎn)擊贊后的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,提升頁(yè)面展示效果。

?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)滑向和離開紅心按鈕的動(dòng)態(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)用戶點(diǎn)擊自己喜歡的圖片上的紅心按鈕時(shí),向后臺(tái)love.php發(fā)送ajax請(qǐng)求,請(qǐng)求響應(yīng)成功后,更新原有的數(shù)值

$(function(){?

$("p?a").click(function(){?

var?love?=?$(this);?

var?id?=?love.attr("rel");?//對(duì)應(yīng)id?

love.fadeOut(300);?//漸隱效果?

$.ajax({?

type:"POST",?

url:"love.php",?

data:"id="+id,?

cache:false,?//不緩存此頁(yè)面?

success:function(data){?

love.html(data);?

love.fadeIn(300);?//漸顯效果?

}?

});?

return?false;?

});?

});

love.php

后臺(tái)love.php接收前端的ajax請(qǐng)求,根據(jù)提交的圖片id值,查找IP表中是否已有該用戶ip的點(diǎn)擊記錄,如果有則告訴用戶已“贊過了”,反之,則進(jìn)行一下操作:

1、更新圖片表中對(duì)應(yīng)的圖片love字段值,將數(shù)值加1。

2、將該用戶IP信息寫入到pic_ip表中,用以防止用戶重復(fù)點(diǎn)擊。

3、獲取更新后的贊值,即贊該圖片的用戶總數(shù),并將該總數(shù)輸出給前端頁(yè)面。

include_once("connect.php");?//連接數(shù)據(jù)庫(kù)?

$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ù)庫(kù)SQL 你可以直接建立test 數(shù)據(jù)庫(kù)UTF8編碼的,然后把SQL文件導(dǎo)入進(jìn)去。修改一下connect.php中數(shù)據(jù)庫(kù)的連接信息即可。

【新手求助】PHP點(diǎn)贊功能,急!?。?/h2>

html:

head

script?src="common/js/jquery.js"?type="text/javascript"/script

script?language="JavaScript"?type="text/javascript"

jQuery(function($)?{

//這兩個(gè)是鼠標(biāo)放上去的效果

$(".zhan").hover(function(){

$(this).children("b").toggle();

});?

$(".cai").hover(function(){

? $(this).children("b").toggle();

});?

});?

/script

script?type="text/javascript"

!--這兩個(gè)點(diǎn)擊事件可以改進(jìn)的,因?yàn)槭录栴},所以就弄了兩個(gè)點(diǎn)擊事件

$(document).ready(function(e)?{

//點(diǎn)贊(給力)

$('.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"

!-----判斷對(duì)應(yīng)的回答的id是否在自己創(chuàng)建的存儲(chǔ)贊和踩數(shù)據(jù)的php文件,如果贊或者踩存在一個(gè)的話就不能再單擊----

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

!--評(píng)論回答開始--

/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)前登錄的會(huì)員的uid對(duì)應(yīng)的點(diǎn)贊的回答

/*****贊結(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)前登錄的會(huì)員的uid對(duì)應(yīng)的踩的回答

/*****踩結(jié)束****/

$smarty-display('自己的靜態(tài)頁(yè)面');

exit();

break;

}

?

ajax

?php?

require_once("array/ovovsys_zan.php");//這里引用array文件夾中的數(shù)組文件

$action=trim($_GET['action']);

if(empty($action)){

echo?'font?color=red參數(shù)錯(cuò)誤!/font';exit();

}

switch($action){

?case?'zan'://點(diǎn)贊(給力)

//$zan_json是數(shù)組文件中設(shè)置的數(shù)組變量,存的是json數(shù)據(jù)----1

$zan_array?=?json_decode(str_replace("'",'"',$zan_json),true);

//獲取當(dāng)前的會(huì)員的uid-----2

$user_answer['uid']=$uid;

//獲取對(duì)應(yīng)的贊的回答的id----2

$user_answer['answer_id']=$_POST['answer_id'];

//將會(huì)員的uid和答案的id一塊的數(shù)組放到指定的數(shù)組中----3

$zan_array[]=$user_answer;

$config_path?=?'shuzu/ovovsys_zan.php';

if(!file_exists($config_path)){

$Base-ErrorMsg('文件錯(cuò)誤:shuzu/ovovsys_zan.php?不存在!');exit();

}

//將指定的數(shù)組轉(zhuǎn)換成json數(shù)據(jù),并且將雙引號(hào)轉(zhuǎn)換成單引號(hào),不然放到數(shù)組文件中后會(huì)出錯(cuò)----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ù)組文件中對(duì)應(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);?

//修改對(duì)應(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('文件錯(cuò)誤: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;

}

?

對(duì)應(yīng)的數(shù)據(jù)文件(因?yàn)閯?chuàng)建數(shù)據(jù)庫(kù)時(shí)沒有創(chuàng)建踩和贊的再斷,所以這里就用php文件存變量的方式保存了一下答案對(duì)應(yīng)的贊和踩的數(shù)據(jù),其中包含用戶的id和答案的id):

?php

$zan_json?=?"";

$cai_json?=?"";

?

你沒看錯(cuò),就是兩個(gè)變量

PHP點(diǎn)贊和踩功能的怎么實(shí)現(xiàn),代碼怎么寫

這個(gè)問題應(yīng)該屬于javascript類,你這樣提問會(huì)導(dǎo)致知道分類分到php里去了。

實(shí)際上應(yīng)該是前端控制的,有人說了,可以用jquery的$.post,如果你要用兩個(gè)form, 那就不能用$('form')這種方式提交,因?yàn)闀?huì)選到兩個(gè)Form,可以分別加標(biāo)示區(qū)分

form?id='good'

/form

form?id='bad'

/form

script

$('#good').submit();

/script

而且點(diǎn)贊和踩,這種功能,不需要用到form, 兩個(gè)Button就可以了


分享文章:php數(shù)據(jù)庫(kù)點(diǎn)贊功能 php點(diǎn)贊的代碼
URL地址:http://weahome.cn/article/dopjgje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部