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
ASP和PHP都是可以删除自身的
Apr 09 PHP
php代码把全角数字转为半角数字
Dec 10 PHP
PHP连接access数据库
Mar 27 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
分享php邮件管理器源码
Jan 06 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
php实现计算百度地图坐标之间距离的方法
May 05 PHP
购物车实现的几种方式优缺点对比
May 02 PHP
php命令行写shell实例详解
Jul 19 PHP
Yii支持多域名cors原理的实现
Dec 05 PHP
PHP扩展安装方法步骤解析
Nov 24 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
PHP删除数组中特定元素的两种方法
2013/07/02 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
Yii框架连接mongodb数据库的代码
2016/07/27 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
实现php删除链表中重复的结点
2018/09/27 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
实现复选框全选/全不选切换
2006/12/23 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
常见JS验证脚本汇总
2015/12/01 Javascript
JavaScript 浏览器兼容性总结及常用浏览器兼容性分析
2016/03/30 Javascript
angular2倒计时组件使用详解
2017/01/12 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
微信小程序异步处理详解
2017/11/10 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python的print用法示例
2014/02/11 Python
浅谈python中的面向对象和类的基本语法
2016/06/13 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python try 异常处理(史上最全)
2019/03/07 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
Scholastic父母商店:儿童书籍
2017/01/01 全球购物
希尔顿酒店官方网站:Hilton Hotels
2017/06/01 全球购物
美国最古老的精致书写工具制造商:A.T. Cross(高仕)
2018/01/30 全球购物
台湾最大银发乐活百货:乐龄网
2018/05/21 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
水污染治理专业毕业生推荐信
2013/11/14 职场文书
40岁生日感言
2014/02/15 职场文书
python中使用 unittest.TestCase单元测试的用例详解
2021/08/30 Python