php點贊功能代碼,微信點贊代碼

本文目錄一覽:

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

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

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

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

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

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

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

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

【新手求助】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 = “”;

?

你沒看錯,就是兩個變數

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點贊和踩功能的怎麼實現,代碼怎麼寫

這個問題應該屬於javascript類,你這樣提問會導致知道分類分到php里去了。

實際上應該是前端控制的,有人說了,可以用jquery的$.post,如果你要用兩個form, 那就不能用$(‘form’)這種方式提交,因為會選到兩個Form,可以分別加標示區分

form id=’good’

/form

form id=’bad’

/form

script

$(‘#good’).submit();

/script

而且點贊和踩,這種功能,不需要用到form, 兩個Button就可以了

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

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

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

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

    編程 2025-04-29
  • Python字元串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字元串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字元串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python基礎代碼用法介紹

    本文將從多個方面對Python基礎代碼進行解析和詳細闡述,力求讓讀者深刻理解Python基礎代碼。通過本文的學習,相信大家對Python的學習和應用會更加輕鬆和高效。 一、變數和數…

    編程 2025-04-29
  • 倉庫管理系統代碼設計Python

    這篇文章將詳細探討如何設計一個基於Python的倉庫管理系統。 一、基本需求 在著手設計之前,我們首先需要確定倉庫管理系統的基本需求。 我們可以將需求分為以下幾個方面: 1、庫存管…

    編程 2025-04-29
  • Python滿天星代碼:讓編程變得更加簡單

    本文將從多個方面詳細闡述Python滿天星代碼,為大家介紹它的優點以及如何在編程中使用。無論是剛剛接觸編程還是資深程序員,都能從中獲得一定的收穫。 一、簡介 Python滿天星代碼…

    編程 2025-04-29
  • 寫代碼新手教程

    本文將從語言選擇、學習方法、編碼規範以及常見問題解答等多個方面,為編程新手提供實用、簡明的教程。 一、語言選擇 作為編程新手,選擇一門編程語言是很關鍵的一步。以下是幾個有代表性的編…

    編程 2025-04-29
  • Python實現簡易心形代碼

    在這個文章中,我們將會介紹如何用Python語言編寫一個非常簡單的代碼來生成一個心形圖案。我們將會從安裝Python開始介紹,逐步深入了解如何實現這一任務。 一、安裝Python …

    編程 2025-04-29
  • 怎麼寫不影響Python運行的長段代碼

    在Python編程的過程中,我們不可避免地需要編寫一些長段代碼,包括函數、類、複雜的控制語句等等。在編寫這些代碼時,我們需要考慮代碼可讀性、易用性以及對Python運行性能的影響。…

    編程 2025-04-29
  • Python愛心代碼動態

    本文將從多個方面詳細闡述Python愛心代碼動態,包括實現基本原理、應用場景、代碼示例等。 一、實現基本原理 Python愛心代碼動態使用turtle模塊實現。在繪製一個心形的基礎…

    編程 2025-04-29

發表回復

登錄後才能評論