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的几个常用数字判断函数代码
Apr 24 PHP
php获取表单中多个同名input元素的值
Mar 20 PHP
php输入流php://input使用浅析
Sep 02 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
Sep 04 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP数据对象PDO操作技巧小结
Sep 27 PHP
php 生成签名及验证签名详解
Oct 26 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
PHP框架laravel的.env文件配置教程
Jun 07 PHP
详解php中curl返回false的解决办法
Mar 18 PHP
Yii 框架入口脚本示例分析
May 19 PHP
如何通过Apache在本地配置多个虚拟主机
Jul 29 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下实现伪 url 的超简单方法[转]
2007/09/24 PHP
PHP Google的translate API代码
2008/12/10 PHP
php 生成文字png图片的代码
2011/04/17 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
PHP获取文件扩展名的常用方法小结【五种方式】
2018/04/27 PHP
Laravel监听数据库访问,打印SQL的例子
2019/10/24 PHP
jQuery 1.9使用$.support替代$.browser的使用方法
2014/05/27 Javascript
NodeJS中利用Promise来封装异步函数
2015/02/25 NodeJs
浅谈Node.js中的定时器
2015/06/18 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
如何使用AngularJs打造权限管理系统【简易型】
2016/05/09 Javascript
jQuery动态创建元素以及追加节点的实现方法
2016/10/20 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
vue-cli项目无法用本机IP访问的解决方法
2018/09/20 Javascript
vue里的data要用return返回的原因浅析
2019/05/28 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
[02:03]风行者至宝清风环佩外观展示
2020/09/05 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Python使用scrapy抓取网站sitemap信息的方法
2015/04/08 Python
Python用61行代码实现图片像素化的示例代码
2018/12/10 Python
详解python中index()、find()方法
2019/08/29 Python
python爬虫 正则表达式解析
2019/09/28 Python
PyTorch使用cpu加载模型运算方式
2020/01/13 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
pandas数据分组groupby()和统计函数agg()的使用
2021/03/04 Python
巧用CSS3的calc()宽度计算做响应模式布局的方法
2018/03/22 HTML / CSS
Hibernate持久层技术
2013/12/16 面试题
会计出纳岗位职责
2013/12/25 职场文书
大学军训感言1000字
2014/02/25 职场文书
教学评估实施方案
2014/03/16 职场文书
校园文明倡议书
2014/05/16 职场文书
2015年乡镇党务公开工作总结
2015/05/19 职场文书
python获取字符串中的email
2022/03/31 Python
Spring中的@Transactional的工作原理
2022/06/05 Java/Android