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/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

发表回复

登录后才能评论