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 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP语言中global和$GLOBALS[]的分析 之二
Feb 02 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
在SAE上搭建最新wordpress的方法
Dec 21 PHP
PHP中preg_match函数正则匹配的字符串长度问题
May 27 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Yii2框架BootStrap样式的深入理解
Nov 07 PHP
php把时间戳转换成多少时间之前函数的实例
Nov 16 PHP
php 截取GBK文档某个位置开始的n个字符方法
Mar 08 PHP
php双层循环(九九乘法表)
Oct 23 PHP
laravel5.2表单验证,并显示错误信息的实例
Sep 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 获得汉字拼音首字母的函数
2009/08/01 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
微信公众号开发之语音消息识别php代码
2016/08/08 PHP
Javascript学习笔记9 prototype封装继承
2010/01/11 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
2011/09/04 Javascript
fancybox modal的完美解决(右上的X)
2012/10/30 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
JS+CSS实现感应鼠标渐变显示DIV层的方法
2015/02/20 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JavaScript设置表单上传时文件个数的方法
2015/08/11 Javascript
iframe中子父类窗口调用JS的方法及注意事项
2015/08/25 Javascript
chrome调试javascript详解
2015/10/21 Javascript
jQuery mobile转换url地址及获取url中目录部分的方法
2015/12/04 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
详解Angular.js的$q.defer()服务异步处理
2016/11/06 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
2018/09/04 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
JavaScript剩余操作符Rest Operator详解
2019/07/20 Javascript
vue 实现移动端键盘搜索事件监听
2019/11/06 Javascript
Python实现修改文件内容的方法分析
2018/03/25 Python
解决python 无法加载downsample模型的问题
2018/10/25 Python
用Python+OpenCV对比图像质量的几种方法
2019/07/15 Python
python3字符串操作总结
2019/07/24 Python
Python基于requests库爬取网站信息
2020/03/02 Python
python实现人脸签到系统
2020/04/13 Python
python中delattr删除对象方法的代码分析
2020/12/15 Python
利用html5 canvas动态画饼状图的示例代码
2018/04/02 HTML / CSS
美国在线纱线商店:Darn Good Yarn
2019/03/20 全球购物
一名毕业生的自我鉴定
2013/12/04 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
警察正风肃纪剖析材料
2014/10/16 职场文书
检讨书范文300字
2015/01/28 职场文书
PHP基本语法
2021/03/31 PHP
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫