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 相关文章推荐
php全排列递归算法代码
Oct 09 PHP
PHP Yii框架之表单验证规则大全
Nov 16 PHP
PHP框架性能测试报告
May 08 PHP
php实现转换html格式为文本格式的方法
May 16 PHP
Yii2框架可逆加密简单实现方法
Aug 25 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
浅谈PHP封装CURL
Mar 06 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 PHP
Yii框架参数配置文件params用法实例分析
Sep 11 PHP
php实例化一个类的具体方法
Sep 19 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
Dec 18 PHP
php操作redis数据库常见方法实例总结
Feb 20 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
DOTA2 6.87版本后新眼位详解攻略
2020/04/20 DOTA
PHP中的替代语法介绍
2015/01/09 PHP
浅谈PHP Cookie处理函数
2016/06/10 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
在页面加载完成后通过jquery给多个span赋值
2014/05/21 Javascript
jQuery中:hidden选择器用法实例
2014/12/30 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
浅谈vue.use()方法从源码到使用
2019/05/12 Javascript
js如何获取访问IP、地区、当前操作浏览器
2019/07/23 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
[01:31]DOTA2上海特级锦标赛 SECRET战队完整宣传片
2016/03/16 DOTA
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
Pandas删除数据的几种情况(小结)
2019/06/21 Python
详解python编译器和解释器的区别
2019/06/24 Python
python内打印变量之%和f的实例
2020/02/19 Python
pandas 强制类型转换 df.astype实例
2020/04/09 Python
浅谈python3打包与拆包在函数的应用详解
2020/05/02 Python
Python eval函数原理及用法解析
2020/11/14 Python
美国领先的在线旅游网站:Orbitz
2018/11/05 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
俄罗斯大型在线书店:Читай-город
2019/10/10 全球购物
党员干部2014全国两会学习心得体会
2014/03/10 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
员工工作自我评价
2014/09/26 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
寒山寺导游词
2015/02/03 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL