php - 使用户能够收藏帖子

2023-12-11

在我的网站上,我希望允许用户收藏帖子。登录的用户被定向到一个显示所有帖子的页面,在每个帖子下我都放置了一个指向收藏夹的超链接。我希望文本从最喜欢变为最喜欢,反之亦然。我怎么做?

HTML 和 PHP

<?php
session_start();
require_once('connection.php');

mysql_select_db($database_connection, $connection);
$query_favorite = "SELECT username, post_id FROM favorite";
$favorite = mysql_query($query_favorite, $connection) or die(mysql_error());
$row_favorite = mysql_fetch_assoc($favorite);
$totalRows_favorite = mysql_num_rows($favorite);
?>

<a href="#" class="favourite">Favourite</a>

我的数据库中的表

CREATE TABLE `user` (
  `username` varchar(45) NOT NULL,
  `email` varchar(45) NOT NULL,
  `password` varchar(45) NOT NULL,
  `profilepic` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`username`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `post` (
  `post_id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  `dato` date NOT NULL,
  `category` varchar(100) NOT NULL,
  `description` varchar(500) NOT NULL,
  `text` longtext NOT NULL,
  PRIMARY KEY (`post_id`),
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8

CREATE TABLE `favorite` (
  `username` varchar(45) NOT NULL,
  `post_id` int(11) NOT NULL,
  PRIMARY KEY (`username`,`post_id`),
  KEY `fk_favorite_post1_idx` (`post_id`),
  CONSTRAINT `fk_favorite_user` FOREIGN KEY (`username`) REFERENCES `user` (`username`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `fk_favorite_post1` FOREIGN KEY (`post_id`) REFERENCES `post` (`post_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8

PHP

<?php
session_start();
require_once('connection.php');

mysql_select_db($database_connection, $connection);
$query_favorite = "SELECT username, post_id FROM favorite";
$favorite = mysql_query($query_favorite, $connection) or die(mysql_error());
$row_favorite = mysql_fetch_assoc($favorite);
$totalRows_favorite = mysql_num_rows($favorite);

if(in_array($_POST['id'], $row_favorite))
{
   //is already favourited, run a query to remove that row from the db, so it won't be favorited anymore

}
else
{
   //post is not favourited already, run a query to add a new favourite to the db.
}

?>

HTML

<a href="#" class="favourite" data-id="<?php echo $post_id; ?>">Favourite</a>

jQuery

$(document).ready(function() {
    $('.favourite').on('click', null, function() {
        var _this = $(this);
        var post_id = _this.data('id');
        $.ajax({
          type     : 'POST',
          url      : '/file.php',
          dataType : 'json',
          data     : 'id='+ post_id,
          complete : function(data) {
               if(_this.siblings('.typcn-star-outline'))
               {
                 _this.html('<span class="typcn typcn-star-full-outline"></span>Favourite');
               }
               else
               {
                 _this.html('<span class="typcn typcn-star-outline"></span>Favourited');
               }
            }
        });
    });
});

另外,请注意,在 PHP 中,mysql_* 函数已被弃用并且使用不安全(它们允许 SQL 注入攻击)。在此处了解有关 PDO 的更多信息:http://code.tutsplus.com/tutorials/why-you-should-be-using-phps-pdo-for-database-access--net-12059

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php - 使用户能够收藏帖子 的相关文章

随机推荐

  • 返回一个对象数组

    想要从方法返回一个对象数组 最好的方法是什么 从数据库检索数据 然后填充要返回的对象列表
  • 使用 pdf 选项,使用 google 脚本将新版本的 google 电子表格导出(或打印)为 pdf 文件

    我正在尝试制作一个谷歌脚本 用于将新版本的谷歌电子表格 或工作表 导出 或打印 为pdf 并带有页面参数 纵向 横向 我对此进行了研究并找到了可能的解决方案here 有几个类似的解决方案 但仅适用于旧版本的谷歌电子表格 请考虑这段代码 fu
  • 语法糖:_* 用于将 Seq 视为方法参数

    我刚刚在网络上的某个地方注意到了这个构造 val list List someCollection 什么是 意思是 这是某些方法调用的语法糖吗 我的自定义类应该满足哪些约束才能利用此语法糖 一般来说 表示法用于类型归属 强制编译器将值视为某
  • Jquery 1.4 - 选择 - onchange 无需点击即可触发 - Firefox

    我看到非常奇怪的行为 在 Firefox 中 如果您有一个选择下拉菜单 但没有选择任何项目 则 onchange 事件会触发 onblur 即使您只是将焦点更改到页面上的不同元素 我的选择只是一个普通的选择
  • 转换方法。 “类型上的指定方法无法转换为 LINQ to Entities 存储表达式”

    我已将实体 6 0 项目从 SQL Server 迁移到 PostGreSQL 使用 SQL Server 我的查询的此类转换过去可以正常工作 模块 cs return from m in objDB Modules orderby m I
  • Android:ActivityThread.performLaunchActivity 错误

    每次在调试器中启动程序时 我都会收到 ActivityThread performLaunchActivity ActivityThread ActivityRecord Intent 错误 该程序甚至无法启动 任何帮助将不胜感激 我对这个
  • $_GET 和 $_POST 不起作用

    我是 php 的初学者 正在尝试一些非常简单的测试来开始 我似乎无法从 GET 获取任何值 这个测试 php usr bin php h1 GET test h1 p p 调用时会产生以下结果http my url test php aVa
  • Debezium 是否可以配置 table_name => kafka 主题映射?

    我读了http debezium io docs connectors mysql 但我找不到任何关于是否可以配置 debezium 的信息 以便可以将 2 个 或更多 表的更改写入同一个 kafka 主题 在我看来 它总是 1 个表 gt
  • 类的泛型类型参数的推断失败取决于该类的属性

    我有一个相当简单的情况 Typescript 无法推断类型 我想知道为什么 Typescript 会这样 Typescript 类型推断失败的情况 如果您有以下类声明 declare class Swine grunt void decla
  • IE7 中的 javascript split regex 错误

    我正在尝试用这个正则表达式进行拆分 在 javascript 中 我在 IE7 和 FF 中得到不同的结果 Firefox 结果是正确的
  • 如何在 Android RecyclerView 中添加分隔线?

    我正在开发一个 Android 应用程序 我正在使用RecyclerView 我需要添加一个divider in RecyclerView 我尝试添加 recyclerView addItemDecoration new DividerIt
  • Titanium - 从以前版本的 iOS 应用程序中检索 SQLite 数据

    我受委托更新一个本机 iOS 应用程序 但由于我们也打算将其发布到其他平台 因此我们正在使用 Appcelerator 的 Titanium 编写新版本 当前的应用程序使用 SQLite 数据库来存储用户信息 当用户将其应用程序更新到新数据
  • 通用属性的缺点?

    我在我的项目中使用通用属性 但我不知道 使用它们有什么缺点 请告诉我一个场景 它们有一个缺点 下面是我的部分代码 public class GenericResult
  • 比较两个频谱图以找到它们匹配算法的偏移量

    我每天通过互联网录制 2 分钟的广播 总是有相同的开始和结束歌曲 由于广播的确切时间可能会有所不同 或多或少有 6 分钟 因此我必须录制大约 15 分钟的广播 我希望确定这些歌曲在 15 分钟记录中出现的确切时间 这样我就可以提取我想要的音
  • 为什么 python xlrd 在打开 .xlsm 而不是 .xls 时出错

    Python 程序可以正常打开 xls 但无法打开 xlsm 并且会立即失败 xlrd open workbook Some filename xlsm 错误 发生异常 AttributeError bytes 对象没有属性 seek 任何
  • 拉取 JSON 数据

    我正在尝试从 json 数据获取事件日历 我只想突出显示日期 并在用户单击日期时在日历下方更新一个包含事件详细信息的 div 我的应用程序以以下形式提供 JSON Date 02 06 2012 Title Eat Bike and Swi
  • 创建 Zip,然后将文件夹复制到其中

    我正在尝试创建一个 zip 文件 然后将三个文件夹复制到其中 我在第 33 行字符 1 上收到错误 需要错误状态对象 我已经搜索和谷歌搜索 但似乎无法理解我正在阅读的内容或理解我真正需要搜索的内容 无论如何 这是我的代码 Option Ex
  • 如何才能让我的表单始终处于最重要的位置?

    我有这些光标形状的小表格 我需要始终将它们置于一切之上 FormStyle已经fsStayOnTop我使用这段代码 SetWindowPos tempCursor Handle HWND TOPMOST 0 0 0 0 SWP NOMOVE
  • Firefox 和 Chrome 在本地主机上运行缓慢;已知修复不适用于 Windows 7

    众所周知 当启用 IP6 时 Firefox 和 Chrome 在本地主机上速度很慢 在以前版本的 Windows 中 最简单的修复方法是从主机文件中注释掉这一行 如中所述这个问题的答案 1 localhost 然而 正如这个问题所指出的
  • php - 使用户能够收藏帖子

    在我的网站上 我希望允许用户收藏帖子 登录的用户被定向到一个显示所有帖子的页面 在每个帖子下我都放置了一个指向收藏夹的超链接 我希望文本从最喜欢变为最喜欢 反之亦然 我怎么做 HTML 和 PHP