小程序给文章点赞

资讯列表页

详情页

小程序前端代码:

(在前端添加点击事件  bindtap='update')

<view style='padding-top:30rpx;width:93%;margin:0 auto;'><text class='block font15 gray5 tl fl' style='padding-left:20rpx;'>阅读数  {{oldcommon.read_num}} </text><view class='p_tb15 m_t5 fr' style='width:15%;margin-top:-30rpx;margin-right:10rpx;'  bindtap='update_zan'><view  wx:if="{{oldcommon.zanstate == 0}}"><image  class='fl zanimagerrzy' src='/images/zan.png' style='width:32rpx;height:32rpx;margin-top:3rpx;'></image></view><view  wx:elif="{{oldcommon.zanstate == 1}}"><image src='/images/zanclock.png' class='fl zanimagerrzy' style='width:32rpx;height:32rpx;margin-top:3rpx;'></image></view><text class='fl m_lr5 font15 gray5 zanallrrzy'>{{oldcommon.vote_num}}</text><view class='cl'></view></view><view class='cl'></view>
</view>

小程序点击事件JS代码

 //点赞 update_zanupdate_zan: function (e) {var that = this;var oldcommon = that.data.oldcommon;console.log(oldcommon);var zanstate = (oldcommon.zanstate == 1) ? 0 : 1;var zanall = oldcommon.vote_num;// 更换状态并修改数据库wx.request({url: app.d.hostUrl + 'changezanstate',data: {id: oldcommon.id,openid: wx.getStorageSync('openid'),zanstate: zanstate},method: 'GET',// header: {},   success: function (res) {//console.log(res);var data = res.data;if(data.errno == 1){// 执行失败则提示并终止程序return;}// 成功则刷新摸板// 更新图片和更新点赞总数var imgsrc = "";if (zanstate == 1){oldcommon.vote_num++;} else{oldcommon.vote_num--;}oldcommon.zanstate = zanstate;//console.log(oldcommon);that.setData({id: oldcommon.id,oldcommon: oldcommon})       }})return ;},

后台接口php

//切换文章点赞状态public function doPagechangezanstate(){global $_W,$_GPC;$uniacid=$_W['uniacid'];// 接收参数$id=$_GPC['id'];$openid=$_GPC['openid'];$zanstate = $_GPC['zanstate'];// 检测文章是否存在$common = pdo_fetch("select * from ".tablename('yyf_company_news')." where id='$id'");if (!$common) {//文章不存在退出return $this->result(1,'error','未找到该文章');}// 检测用户是否存在$userinfo = pdo_fetch("select * from ".tablename('yyf_company_userinfo')." where openid='$openid'");if (!$userinfo) {//用户不存在退出return $this->result(1,'error','未找到该用户');}// 开启事务,因为使用mysiam表,这里暂不使用事务// 验证并更新点赞中间表(备注:中间表执行失败继续执行,不影响总数,若要严谨则表修改成innodb引擎并使用事务)$zan = pdo_fetch("select * from ".tablename('yyf_company_zan')." where `a_id` = $id and `openid`='$openid'");if ($zan) {// 不能重复操作if ((int)$zan['status'] == $zanstate) {// 取消点赞则退出if ($zanstate == 0) {return $this->result(1,'error','未点赞不能取消');}// 重复操作退出return $this->result(1,'error','不能重复点赞');}// 更新中间表状态pdo_update('yyf_company_zan', array('status =' => $zanstate),array('a_id' => $id, 'openid' => $openid));}else{// 取消点赞则退出if ($zanstate == 0) {return $this->result(1,'error','未点赞不能取消');}// 插入中间表pdo_insert("yyf_company_zan", array('openid' => $openid, 'a_id' => $id, 'create_at' => time()));}$num = ($zanstate == 1) ? 1 : -1;// 增减点赞总数$res = pdo_update('yyf_company_news', array('vote_num +=' => $num),array('id' => $id));if (!$res) {// 数据库执行失败则退出return $this->result(1,'error',"数据库执行失败");}// 成功则提交事务并更新摸板,反之则提示失败不更新摸板// 成功返回,并刷新摸板// 这里为了执行效率并且对于点赞总数严谨性不高,不从数据库取数据,直接前端更新return $this->result(0,'success',$data);}

对应的数据表

微信小程序 文章点赞功能相关推荐

  1. 微信小程序列表点赞功能

    实现思路: 1.找到对应文章的id 2.前端利用缓存wx.setStorageSync或者在页面js中this.setData()保存列表中点赞的id 3.点赞和取消点赞对应点赞数改变 4.后台的数据 ...

  2. 微信小程序实现点赞功能(前端)

    可以通过以下代码实现点赞效果,且只能点赞一次: <view class="card-right"><text class="topText"& ...

  3. 微信小程序原生开发功能合集一:微信小程序开发介绍

    一.专栏介绍   本专栏主要内容为微信小程序常用功能开发过程的介绍说明,包括开发微信小程序常用组件的封装.常用功能的开发等,提供源代码.开发过程讲解视频.完整的课程等.   组件封装: 下拉选择组件. ...

  4. IVX低代码平台开发——微信小程序实现抽奖功能

    写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...

  5. python玩微信小程序游戏_使用python实现微信小程序自动签到功能

    功能描述目标 完成多账号微信小程序每天自动签到 输出 签到成功则向微信群发送签到成功的信息 否则提示用户签到失败,需手动签到 包管理 requests itchat time threading 程序 ...

  6. 微信小程序支付退款功能

    微信小程序支付退款功能 2022年02月做了一个微信小程序前端+ASP.NET后台的微信退款功能.功能的基本原理是使用JSAPI方式,对接之前的微信支付功能差不多.也是要签名,校验等.只不过它的退款传 ...

  7. 小程序录音上传服务器,微信小程序录音实现功能并上传(使用node解析接收)

    微信小程序录音实现功能并上传(使用node解析接收) 发布时间:2020-09-04 11:59:06 来源:脚本之家 阅读:97 作者:weixin_43188227 背景 我在开发小程序的时候,有 ...

  8. 微信小程序实现点赞气泡效果

    微信小程序实现点赞气泡效果 先上代码: <view class="listImg"><block wx:for="{{8}}" wx:key= ...

  9. android指南针小程序,使用微信小程序实现指南针功能

    使用微信小程序实现指南针功能 发布时间:2020-10-26 15:18:16 来源:亿速云 阅读:79 作者:Leah 本篇文章为大家展示了使用微信小程序实现指南针功能,内容简明扼要并且容易理解,绝 ...

最新文章

  1. SpringMVC(三):使用 POJO 对象绑定请求参数值
  2. 2批量批量查询数据插入数据_Excel如何快速对数据批量查询,vlookup+match函数高效完成工作...
  3. 监听iPhone的通话状态之---CoreTelephony.framework
  4. 为什么需要DTO(数据传输对象)
  5. Request.Url.Port 获取不到正确的端口号
  6. 编程范式,程序员的编程世界观(转)
  7. 学习Spring-Cloud –编写微服务
  8. Django 数据导入和导出
  9. redis源码剖析(十四)—— dump.rdb文件分析工具
  10. dueros模拟测试没有请求后台_DuerOS开放平台
  11. java 抽象类和接口2--什么时候用接口什么时候用抽象类
  12. fasthttp中的协程池实现
  13. python绘制玫瑰花代码视频_python turtle玫瑰花绘制效果和源代码
  14. 极易的je-analysis-1.5.3.jar 可与 solr 一起使用 http://www.jesoft.cn/
  15. Google搜索从入门到精通V4.0(转)
  16. 《大江大河2》中教科书般的精神自救-如何让反感你的人欣赏你
  17. java 使用poi HSSFWorkbook导出xls文件 office打不开,提示文件损坏,wps能打开。
  18. c语言10个选手10个评委,C语言歌星大奖赛为参赛的选手打分.doc
  19. sql中以sa命名的用户名无法使用,错误码1845
  20. 8051单片机基础6:通用指针和定向指针

热门文章

  1. beini桌面没有奶瓶图标
  2. UML图详解(八)状态机(状态图和活动图)
  3. WiringPi 下载与安装
  4. 【数据结构与算法基础】并查集原理、封装实现及例题解析(C和java)
  5. [数字后端]LVT, RVT, HVT 的区别
  6. 安装和使用Dplayer
  7. 计算机科学类学术论文,关于举办计算机科学学院“挑战杯”大学生课外学术科技作品之信息技术、软件设计类,自然科学类学术论文竞赛的通知...
  8. 全球最著名的矢量图形软件:AI 2021新增功能有哪些?
  9. 信息系统项目管理师备考经验分享
  10. Excel Note 001-多条件计数,多条件求和,双条件矩阵求值