首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

dedecms 点赞功能

基础概念

DedeCMS(织梦内容管理系统)是一款基于PHP+MySQL架构的网站内容管理系统。点赞功能是指用户可以对某个内容(如文章、评论等)进行点赞操作,以表达对该内容的喜爱或支持。

相关优势

  1. 用户互动:点赞功能可以增强用户之间的互动,提升网站的活跃度。
  2. 内容筛选:通过点赞数,用户可以快速找到受欢迎的内容。
  3. 数据分析:点赞数据可以作为内容质量的一个重要指标,帮助网站运营者优化内容策略。

类型

  1. 静态点赞:用户点击点赞按钮后,页面上的点赞数会立即更新,但实际数据可能不会立即同步到服务器。
  2. 动态点赞:用户点击点赞按钮后,数据会实时同步到服务器,点赞数会实时更新。

应用场景

  1. 文章点赞:用户可以对文章进行点赞,表达对文章内容的喜爱。
  2. 评论点赞:用户可以对评论进行点赞,表达对评论内容的认可。
  3. 视频点赞:用户可以对视频进行点赞,表达对视频内容的喜爱。

实现步骤

  1. 数据库设计:在数据库中添加一个表来存储点赞数据,通常包括用户ID、内容ID、点赞时间等字段。
  2. 前端实现:在页面上添加点赞按钮,并通过JavaScript监听点击事件。
  3. 后端实现:编写API接口来处理点赞请求,更新数据库中的点赞数据。

示例代码

数据库设计

代码语言:txt
复制
CREATE TABLE `likes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `content_id` int(11) NOT NULL,
  `created_at` datetime NOT NULL,
  PRIMARY KEY (`id`)
);

前端实现

代码语言:txt
复制
<button id="like-btn" data-content-id="123">点赞</button>
<span id="like-count">0</span>

<script>
document.getElementById('like-btn').addEventListener('click', function() {
  var contentId = this.getAttribute('data-content-id');
  fetch('/api/like', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ content_id: contentId })
  })
  .then(response => response.json())
  .then(data => {
    document.getElementById('like-count').innerText = data.like_count;
  });
});
</script>

后端实现(PHP)

代码语言:txt
复制
<?php
// 假设使用PDO连接数据库
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');

// 处理点赞请求
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content_id'])) {
  $contentId = $_POST['content_id'];
  $userId = 1; // 假设当前用户ID为1

  // 检查是否已经点赞
  $stmt = $db->prepare("SELECT COUNT(*) FROM likes WHERE user_id = ? AND content_id = ?");
  $stmt->execute([$userId, $contentId]);
  $hasLiked = $stmt->fetchColumn() > 0;

  if (!$hasLiked) {
    // 插入点赞记录
    $stmt = $db->prepare("INSERT INTO likes (user_id, content_id, created_at) VALUES (?, ?, NOW())");
    $stmt->execute([$userId, $contentId]);

    // 更新点赞数
    $stmt = $db->prepare("UPDATE contents SET like_count = like_count + 1 WHERE id = ?");
    $stmt->execute([$contentId]);
  }

  // 获取当前点赞数
  $stmt = $db->prepare("SELECT like_count FROM contents WHERE id = ?");
  $stmt->execute([$contentId]);
  $likeCount = $stmt->fetchColumn();

  echo json_encode(['like_count' => $likeCount]);
}
?>

可能遇到的问题及解决方法

  1. 重复点赞:用户多次点击点赞按钮,导致重复点赞。可以通过在数据库中记录用户的点赞记录来避免重复点赞。
  2. 数据不一致:前端显示的点赞数与实际数据不一致。可以通过优化前后端数据同步机制来解决。
  3. 性能问题:大量用户同时点赞导致服务器压力过大。可以通过使用缓存(如Redis)来减轻数据库压力。

参考链接

希望以上信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

利用 leanCloud 实现点赞功能

点赞功能 社交平台的必备良药,谁谁谁什么时候给你点了个赞,点赞什么的貌似已经深入人心了。...之前在 @火喵酱 的博客页面有看到说想用 leancloud 实现 do you like me 的点赞功能,之前没接触 leancloud 的 SDK 不知道咋搞,后来就不了了之,然后因为最近做了 valine...的最新评论排行,所以借这个风顺便来做个点赞功能~ 点赞按钮 实践操作 和 valine 最新评论一样,首先需要引入 sdk 并初始化完成化后接入具体实现的代码即可(这个就不说了,上篇笔记里有写的) 实现思路...因为我要做的是页面点赞功能,所以可能会比 do you like me 那个稍稍多个步骤。...这里再聊下思路,一般做点赞功能都是在本地点击计数之后再把数据上传到云端服务器,访问页面的时候直接根据页面拉取对应的数据填充即可。

14210
  • 点赞功能,用 MySQL?还是 Redis!

    数据一致性 点赞功能是目前app开发基本的功能 今天我们就来聊聊 点赞、评论、收藏等这些场景的db数据库设计问题, 1....我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点赞列表,一般在用户中心 显示文章点赞列表 我们先看一下头条和微博的例子 ? ?...下面说下redis作为storage的方案: 场景a :显示点赞数量 在点赞的地方,只是显示一个点赞数量,能区分用户是否点赞过,一般用户不关心这个列表,这个场景只要一个数字就可以了,当数量比较大时,一般显示为...:tid:888 //实现数量自增 (integer) 899 场景b:点赞去重,避免重复点赞 要实现这个需求,必须有文章点赞的uid列表,以uid为key场景c:一般在用户中心,可以看到用户自己的点赞列表...uid列表 (integer) 3 127.0.0.1:6379[2]> sismember star:list:tid:888 456 //判断是否点赞 (integer) 1 点赞的地方,如果点赞过显示红色

    2K20

    点赞功能,用 MySQL 还是 Redis ?

    作者:一起web编程 www.toutiao.com/i6825148720728769028 点赞功能是目前app开发基本的功能 今天我们就来聊聊 点赞、评论、收藏等这些场景的db数据库设计问题, 1...我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点赞列表,一般在用户中心 显示文章点赞列表 我们先看一下头条和微博的例子 ? ?...下面说下redis作为storage的方案: 场景a :显示点赞数量 在点赞的地方,只是显示一个点赞数量,能区分用户是否点赞过,一般用户不关心这个列表,这个场景只要一个数字就可以了,当数量比较大时,一般显示为...star:tid:888 //实现数量自增 (integer) 899 场景b:点赞去重,避免重复点赞 要实现这个需求,必须有文章点赞的uid列表,以uid为key场景c:一般在用户中心,可以看到用户自己的点赞列表...如果点赞过显示红色,没有则显示黑白色, 今日头条是没有地方可以看到点赞列表的,而微博点进去,详情页可以看到点赞列表,但是只会显示最近的几十条,没有分页显示。

    1.1K30

    点赞功能,你用 MySQL 还是 Redis ?

    作者:一起web编程 链接:www.toutiao.com/i6825148720728769028 点赞功能是目前app开发基本的功能 今天我们就来聊聊 点赞、评论、收藏等这些场景的db数据库设计问题...我们先来看看场景的需求: 显示点赞数量 判断用户是否点过赞,用于去重,必须的判断 显示个人点赞列表,一般在用户中心 显示文章点赞列表 我们先看一下头条和微博的例子 [897b7172-a444-4a0e-a984...下面说下redis作为storage的方案: 场景a :显示点赞数量 在点赞的地方,只是显示一个点赞数量,能区分用户是否点赞过,一般用户不关心这个列表,这个场景只要一个数字就可以了,当数量比较大时,一般显示为...star:tid:888 //实现数量自增 (integer) 899 场景b:点赞去重,避免重复点赞 要实现这个需求,必须有文章点赞的uid列表,以uid为key场景c:一般在用户中心,可以看到用户自己的点赞列表...:tid:888 456 //判断是否点赞 (integer) 1 点赞的地方,如果点赞过显示红色,没有则显示黑白色, 今日头条是没有地方可以看到点赞列表的,而微博点进去,详情页可以看到点赞列表,但是只会显示最近的几十条

    67040

    Redis位图实现点赞签到相关功能

    前言 对于我们平时的一些社区应用,如微博,知乎,掘金等应用点赞,评论这类功能是不可或缺的,例如点赞功能我们其实是可以通过 mysql 去做实现的,但是每次点赞都去实时改库可以想象一下当遇到一个热点文章例如...字节的内容也就是2^32b; ❝2^(9(512)+10(1024)+10(1024)+3(8b=1B))=2^32b ❞ 应用场景: 用户签到 用户在线状态 统计活跃用户 各种状态值 自定义布隆过滤器 点赞功能...integer) 0 //查找 127.0.0.1:6379> getbit a 2 (integer) 1 //统计 127.0.0.1:6379> bitcount a (integer) 2 点赞功能...点赞功能 我这里的处理方式是异步改库,点完赞之后异步修改数据库,不要求实时处理结果其实可以用定时任务去批量改库(需要存一定时间内的 postId 和 userId 索引关系); @Override public...一个简单的位图实现点赞等功能就实现了,大家一个举一反三哈,玩法还是很多的,大家也可以根据自己的需求去做优化,希望可以对大家有帮助,有不对的地方希望大家可以提出来的,共同成长。 ❞

    1K10

    点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。

    1.9K60

    点赞模块设计 - Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...由于需要记录点赞人和被点赞人,还有点赞状态(点赞、取消点赞),还要固定时间间隔取出 Redis 中所有点赞数据,分析了下 Redis 数据格式中 Hash 最合适。...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 如有更好的实现方案欢迎在评论区交流… 项目地址:https://github.com/cachecats/coderiver

    2.2K50

    点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功能

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...1.4 点赞数据在 Redis 中的存储格式 用 Redis 存储两种数据,一种是记录点赞人、被点赞人、点赞状态的数据,另一种是每个用户被点赞了多少次,做个简单的计数。...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 后期继续分享会当下最流行的xxl-job,Elastic-Job

    6.5K40

    使用代码方式实现WordPress文章点赞功能

    实现思路 通过 ajax 实时显示点赞数量,自定义字段保存赞数量,Cookies 禁止重新点赞。...click", ".favorite", function() { $(this).postLike(); }); 修改文章页面single.php,在你需要的位置添加一个点赞按钮...> 通过上面的三段代码就已经实现文章点赞功能,但是样式效果惨不忍睹,作者还提供了下面的样式,添加到主题style.css中(下方样式xiaoz未经测试) .post-like...但如果您网站启用了CDN,或使用了WP-Super-Cache这类静态缓存插件后,页面会被提前缓存起来,这样判断也就失效了,便可以无限点赞,于是xiaoz进行了改进,通过js再判断一次COOKIES是否存在...; } else{ $(this).postLike(); } }); 总结 最后实现的功能类似小z博客文章下方的点赞效果,这里主要提供思路和代码实现

    1.1K10

    如何设计微博点赞功能数据库?

    一、如何设计微博点赞功能数据库? 明星的一条微博的点赞数可能有几十万,甚至百万以上。那么这个「点赞功能」(会记录谁点了赞),新浪微博的数据库是如何设计的呢?...概括一下:就是想弄明白「点赞」这种数据量庞大的功能,数据库是如何设计、保存的呢? 没设计过微博,也不懂新浪是怎么搞的,纯粹按照我们做流式监测项目的经验做一个设计思路。...首先每条微博你所看到的点赞总数肯定本地和后端分开,也就是你点赞后,本地加1,先保证你自己马上看到变化。...然后通过点赞事件的方式传递给队列中,肯定不会直接写关系数据库,一条流量明星微博,千万粉丝点赞,评论里再点赞的请求事件挺吓人的。...另外保证最近一周的微博点赞统计数都在内存里,例如用Redis,一周以上的微博点赞数据都在k-v库里,例如用Hbase。内存库和kv库可以做冷热数据交换。

    1.4K30

    Redis是如何实现点赞、取消点赞的?

    点赞功能在很多系统中都有,但别看功能小,想要做好需要考虑的东西还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。...项目需求需要查看都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简单的做计数。...1.4 点赞数据在 Redis 中的存储格式 用 Redis 存储两种数据,一种是记录点赞人、被点赞人、点赞状态的数据,另一种是每个用户被点赞了多少次,做个简单的计数。...id,点赞用户id,点赞状态。...以上就是点赞功能的设计与实现,不足之处还请各位大佬多多指教。 如有更好的实现方案欢迎在评论区交流…

    2.6K20
    领券