php分享點贊,php點贊功能

本文目錄一覽:

怎麼用PHP來做網站上的贊功能?

網站上的贊功能類似於統計功能。

總體來說,在頁面上做好「贊」連接或者按鈕,點擊觸發事件;事件中可以ajax操作伺服器代碼,在資料庫中執行+1操作等,並返回結果給「贊」數值。

根據是否需要記錄用戶,分兩種情況:

不需要記錄誰贊了,只統計被贊次數

文章表裡加一個被贊次數的欄位,用戶每點一次「贊」,更新對應文章的被贊次數,也就是這個欄位值+1;

需要記錄用戶「贊」的記錄

新加一個「贊」的記錄表,包括點贊的用戶id,被贊的文章id,贊的時間等,用戶每點一次贊,就在這個表裡新增一條數據。這個可以嚴格控制用戶贊同一篇文章的次數

求PHP文章點贊實現原理 下面有具體說明

你好!

你可以將id放到被循環的一個div裡面,設置成屬性,或者加入到隱藏域中,點贊時候,你就可以獲取到裡面的值了,

如有疑問,請追問。

Php點贊效果的製作代碼+解析

資料庫設計

先準備兩張表,pic表保存的是圖片信息,包括圖片對應的名稱、路徑以及圖片「贊」總數,pic_ip則記錄用戶點擊贊後的IP數據。

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表中的圖片信息並展示出來,結合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中,我們將定義滑鼠滑向和離開紅心按鈕的動態效果,並定位按鈕的位置。

.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代碼

當用戶點擊自己喜歡的圖片上的紅心按鈕時,向後台love.php發送ajax請求,請求響應成功後,更新原有的數值

$(function(){ 

    $(“p a”).click(function(){ 

        var love = $(this); 

        var id = love.attr(“rel”); //對應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請求,根據提交的圖片id值,查找IP表中是否已有該用戶ip的點擊記錄,如果有則告訴用戶已「贊過了」,反之,則進行一下操作:

1、更新圖片表中對應的圖片love欄位值,將數值加1。

2、將該用戶IP信息寫入到pic_ip表中,用以防止用戶重複點擊。

3、獲取更新後的贊值,即贊該圖片的用戶總數,並將該總數輸出給前端頁面。

include_once(“connect.php”); //連接資料庫 

 

$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'”; //更新數據 

    mysql_query( $sql); 

    $sql_in = “insert into pic_ip (pic_id,ip) values (‘$id’,’$ip’)”; //寫入數據 

    mysql_query( $sql_in); 

    $result = mysql_query(“select love from pic where id=’$id'”); 

    $row = mysql_fetch_array($result); 

    $love = $row[‘love’]; //獲取贊數值 

    echo $love; 

}else{ 

    echo “贊過了..”; 

}

我上傳的附件中 資料庫SQL 你可以直接建立test 資料庫UTF8編碼的,然後把SQL文件導入進去。修改一下connect.php中資料庫的連接信息即可。

【新手求助】PHP點贊功能,急!!!

html:

head

script src=”common/js/jquery.js” type=”text/javascript”/script

script language=”JavaScript” type=”text/javascript”

jQuery(function($) {

//這兩個是滑鼠放上去的效果

$(“.zhan”).hover(function(){

  $(this).children(“b”).toggle();

}); 

$(“.cai”).hover(function(){

  $(this).children(“b”).toggle();

}); 

 }); 

/script

script type=”text/javascript”

 !–這兩個點擊事件可以改進的,因為事件問題,所以就弄了兩個點擊事件

  $(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”

!—–判斷對應的回答的id是否在自己創建的存儲贊和踩數據的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);//查詢當前登錄的會員的uid對應的點贊的回答

  /*****贊結束****/

  /*****踩開始****/

$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);//查詢當前登錄的會員的uid對應的踩的回答

  /*****踩結束****/

$smarty-display(‘自己的靜態頁面’);

exit();

break;

}

?

ajax

?php 

require_once(“array/ovovsys_zan.php”);//這裡引用array文件夾中的數組文件

$action=trim($_GET[‘action’]);

if(empty($action)){

echo ‘font color=red參數錯誤!/font’;exit();

}

switch($action){

 case ‘zan’://點贊(給力)

//$zan_json是數組文件中設置的數組變數,存的是json數據—-1

$zan_array = json_decode(str_replace(“‘”,'”‘,$zan_json),true);

//獲取當前的會員的uid—–2

$user_answer[‘uid’]=$uid;

//獲取對應的贊的回答的id—-2

$user_answer[‘answer_id’]=$_POST[‘answer_id’];

//將會員的uid和答案的id一塊的數組放到指定的數組中—-3

$zan_array[]=$user_answer;

$config_path = ‘shuzu/ovovsys_zan.php’;

if(!file_exists($config_path)){

$Base-ErrorMsg(‘文件錯誤:shuzu/ovovsys_zan.php 不存在!’);exit();

}

//將指定的數組轉換成json數據,並且將雙引號轉換成單引號,不然放到數組文件中後會出錯—-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();

}

//執行替換,將數組文件中對應的json數據—-5

$content = str_replace(“\$zan_json = \”{$zan_json}\””,”\$zan_json = \”{$zan_new_json}\””,$content);

$fp = @fopen($config_path,’w+’); 

@fwrite($fp,$content); 

//修改對應的數據表中的數據—-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;

}

?

對應的數據文件(因為創建資料庫時沒有創建踩和贊的再斷,所以這裡就用php文件存變數的方式保存了一下答案對應的贊和踩的數據,其中包含用戶的id和答案的id):

?php

$zan_json = “”;

$cai_json = “”;

?

你沒看錯,就是兩個變數

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/293931.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-26 13:15
下一篇 2024-12-26 13:15

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • Java和Python哪個功能更好

    對於Java和Python這兩種編程語言,究竟哪一種更好?這個問題並沒有一個簡單的答案。下面我將從多個方面來對Java和Python進行比較,幫助讀者了解它們的優勢和劣勢,以便選擇…

    編程 2025-04-29
  • Python每次運行變數加一:實現計數器功能

    Python編程語言中,每次執行程序都需要定義變數,而在實際開發中常常需要對變數進行計數或者累加操作,這時就需要了解如何在Python中實現計數器功能。本文將從以下幾個方面詳細講解…

    編程 2025-04-28
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • Python strip()函數的功能和用法用法介紹

    Python的strip()函數用於刪除字元串開頭和結尾的空格,包括\n、\t等字元。本篇文章將從用法、功能以及與其他函數的比較等多個方面對strip()函數進行詳細講解。 一、基…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若伺服器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • 全能的wpitl實現各種功能的代碼示例

    wpitl是一款強大、靈活、易於使用的編程工具,可以實現各種功能。下面將從多個方面對wpitl進行詳細的闡述,每個方面都會列舉2~3個代碼示例。 一、文件操作 1、讀取文件 fil…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27

發表回復

登錄後才能評論