php+jQuery+Ajax实现点赞效果的方法(附源码下载)


Posted in PHP onJuly 21, 2020

本文实例讲述了php+jQuery+Ajax实现点赞效果的方法。分享给大家供大家参考,具体如下:

数据库设计

先准备两张表,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 = mysqli_query($link,"select * from pic");
	 while($row=mysqli_fetch_array($sql)){
		 $pic_id = $row['id'];
		 $pic_name = $row['pic_name'];
		 $pic_url = $row['pic_url'];
		 $love = $row['love'];
	 ?>
   	<li><img src="./images/<?php echo $pic_url;?>" alt="<?php echo $pic_name;?>"><p><a 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();
$id = $_POST['id'];
if(!isset($id) || empty($id)) exit;

$ip_sql=mysqli_query($link,"select ip from pic_ip where pic_id='$id' and ip='$ip'");
$count=mysqli_num_rows($ip_sql);
if($count==0){
	$sql = "update pic set love=love+1 where id='$id'";
	mysqli_query($link,$sql);
	$sql_in = "insert into pic_ip (pic_id,ip) values ('$id','$ip')";
	mysqli_query($link,$sql_in);
	$result = mysqli_query($link,"select love from pic where id='$id'");
	$row = mysqli_fetch_array($result);
	$love = $row['love'];
	echo $love;
}else{
	echo "赞过了..";
}

我上传的附件中 数据库SQL 你可以直接建立test 数据库UTF8编码的,然后把SQL文件导入进去。修改一下connect.php中数据库的连接信息即可。

源文件点击此处本站下载。

总结:

其实就是发了一个ajax请求,比如你要赞一个商品。商品表肯定有一个计数的字段。你发一个请求过去把这个字段+1

该成功了就返回一个现在的数。然后把页面改一下就成了

function Zan( goodsId, a ){
 $.post( "/goods/zan/"+goodsId, null,function( ret ){
   if( ret.status == 'ok' )
   $(a).html( ret.zannum);
   else
   alert( ret.data );
 },'json' );
}

希望本文所述对大家php程序设计有所帮助。

备注:三水点靠木改写了mysqli函数处理数据库操作,以方便兼容PHP7开发环境

到此这篇关于php+jQuery+Ajax实现点赞效果的方法(附源码下载)的文章就介绍到这了,更多相关php+jQuery+Ajax点赞效果内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
生成缩略图
Oct 09 PHP
php格式化工具Beautify PHP小小BUG
Apr 24 PHP
通过JavaScript或PHP检测Android设备的代码
Mar 09 PHP
Php output buffering缓存及程序缓存深入解析
Jul 15 PHP
简单实用的.net DataTable导出Execl
Oct 28 PHP
destoon实现商铺管理主页设置增加新菜单的方法
Jun 26 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP+JS实现的商品秒杀倒计时用法示例
Nov 15 PHP
php str_replace替换指定次数的方法详解
May 05 PHP
PHP随机数函数rand()与mt_rand()的讲解
Mar 25 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
Aug 24 PHP
如何运行/调试你的PHP代码
Oct 23 PHP
WordPress中限制非管理员用户在文章后只能评论一次
Dec 31 #PHP
php实现微信公众号主动推送消息
Dec 31 #PHP
php创建桌面快捷方式实现方法
Dec 31 #PHP
开启PHP的伪静态模式
Dec 31 #PHP
thinkphp多层MVC用法分析
Dec 30 #PHP
thinkphp命名空间用法实例详解
Dec 30 #PHP
详解PHP中的null合并运算符
Dec 30 #PHP
You might like
PHP下判断网址是否有效的代码
2011/10/08 PHP
浅析ThinkPHP中的pathinfo模式和URL重写
2014/01/06 PHP
使用php批量删除数据库下所有前缀为prefix_的表
2014/06/09 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
使用phpQuery获取数组的实例
2017/03/13 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
jquery实现弹出窗口效果的实例代码
2013/11/28 Javascript
深入理解JavaScript系列(50):Function模式(下篇)
2015/03/04 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
jQuery实现的自定义滚动条实例详解
2016/09/20 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
原生Javascript插件开发实践
2017/01/18 Javascript
es6学习笔记之Async函数的使用示例
2017/05/11 Javascript
详解如何使用webpack+es6开发angular1.x
2017/08/16 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
Vue 修改网站图标的方法
2020/12/31 Vue.js
Python3控制路由器——使用requests重启极路由.py
2016/05/11 Python
使用python 3实现发送邮件功能
2018/06/15 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
降低python版本的操作方法
2020/09/11 Python
使用Python绘制台风轨迹图的示例代码
2020/09/21 Python
违反校纪校规检讨书
2014/02/15 职场文书
求职信名称怎么写
2014/05/26 职场文书
交通事故协议书范文
2014/10/23 职场文书
小学教师节活动总结
2015/03/20 职场文书
2015年妇联工作总结范文
2015/04/22 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
python process模块的使用简介
2021/05/14 Python
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang
MySQL学习必备条件查询数据
2022/03/25 MySQL