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实现的获取URL信息的类
Jan 02 PHP
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
PHP测试程序运行时间的类
Feb 05 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
thinkphp判断访客为手机端或PC端的方法
Nov 24 PHP
php检查字符串中是否有外链的方法
Jul 29 PHP
PHP常见错误提示含义解释(实用!值得收藏)
Apr 25 PHP
thinkphp3.x中cookie方法的用法分析
May 19 PHP
PHP学习笔记之php文件操作
Jun 03 PHP
PHP会话操作之cookie用法分析
Sep 28 PHP
php实现连接access数据库并转txt写入的方法
Feb 08 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 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
图解上海144收音机
2021/03/02 无线电
简单的移动设备检测PHP脚本代码
2011/02/19 PHP
浅析PHP页面局部刷新功能的实现小结
2013/06/21 PHP
浅析PHP的ASCII码转换类
2013/07/05 PHP
php使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
Zend Framework教程之模型Model用法简单实例
2016/03/04 PHP
纯JavaScript基于notie.js插件实现消息提示特效
2016/01/18 Javascript
浅谈js中对象的使用
2016/08/11 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
JavaScript寄生组合式继承实例详解
2018/01/06 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
微信小程序调用后台service教程详解
2020/11/06 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
python flask实现分页效果
2017/06/27 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
numpy linalg模块的具体使用方法
2019/05/26 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
Python脚本实现Zabbix多行日志监控过程解析
2020/08/26 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
python Gabor滤波器讲解
2020/10/26 Python
N.Peal官网:来自伦敦的高档羊绒品牌
2018/10/29 全球购物
五型班组建设方案
2014/02/10 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
2015年外联部工作总结
2015/04/03 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python