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 相关文章推荐
简单采集了yahoo的一些数据
Feb 14 PHP
php获取某个目录大小的代码
Sep 10 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
php中常用的预定义变量小结
May 09 PHP
如何使用php判断服务器是否是HTTPS连接
Jul 05 PHP
PHP定时更新程序设计思路分享
Jun 10 PHP
在php和MySql中计算时间差的方法详解
Mar 27 PHP
详解WordPress中分类函数wp_list_categories的使用
Jan 04 PHP
ThinkPHP路由机制简介
Mar 23 PHP
PHP实现深度优先搜索算法(DFS,Depth First Search)详解
Sep 16 PHP
phpstudy2020搭建站点的实现示例
Oct 30 PHP
PHP7 windows支持
Mar 09 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
asp.net和php的区别点总结
2019/10/10 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
Jquery AJAX POST与GET之间的区别
2013/11/14 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
JS中getYear()和getFullYear()区别分析
2014/07/04 Javascript
javascript删除一个html元素节点的方法
2014/12/20 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
JavaScript原生对象常用方法总结(推荐)
2016/05/13 Javascript
Vue.js创建Calendar日历效果
2016/11/03 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
JS正则匹配URL网址的方法(可匹配www,http开头的一切网址)
2017/01/06 Javascript
详解js中==与===的区别
2017/01/08 Javascript
AngularJS对动态增加的DOM实现ng-keyup事件示例
2018/03/12 Javascript
在vue中读取本地Json文件的方法
2018/09/06 Javascript
[05:09]第二届DOTA2亚洲邀请赛决赛日比赛集锦:iG 3:0 OG夺冠
2017/04/05 DOTA
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
python实现连接mongodb的方法
2015/05/08 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
2015/05/25 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
Django后台获取前端post上传的文件方法
2018/05/28 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
2018/12/24 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
Numpy数组array和矩阵matrix转换方法
2019/08/05 Python
对Django url的几种使用方式详解
2019/08/06 Python
如何利用input事件来监听移动端的输入
2016/04/15 HTML / CSS
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
元旦主持词开场白
2015/05/29 职场文书
乡镇司法所2015年度工作总结
2015/10/14 职场文书
银行工作心得体会范文
2016/01/23 职场文书