mysql - 单击 URL 后停止显示行。PHP MYSQLI
问题描述
我正在创建一个网站,用户可以在其中发布链接并与他们互动。
所有用户都会显示一个包含用户所有链接的表格。
但我需要问一个问题,因为当用户与链接交互时,该链接将不会再次显示。也就是说,当用户点击一个链接时,该链接只对点击的用户消失
我做了以下事情。
我有存储所有用户的表(用户)。
Table1 (users):
----------------
| id | username |
----------------
| 1 | user1 |
----------------
| 2 | user2 |
----------------
| 3 | user3 |
----------------
这是存储所有链接的第二个表
Table2 (links):
----------------
| id | urls |
----------------
| 1 | url1 |
----------------
| 2 | url2 |
----------------
| 3 | url3 |
----------------
现在假设(表 1(用户)的 USER2)单击了以下链接(表 2(链接)的 URL1 和 URL2)。
当用户点击一个 url 时,以下值存储在第三个表中,如下所示:
Table3 (blockuser):
-----------------------
| id | idLinks | users |
-----------------------
| 1 | 1 | user2 |
------------------------
| 2 | 2 | user2 |
-----------------------
现在,我希望包含所有链接的表格以下列方式显示给每个用户。这就是我想要实现的目标:
User1: User2: User3:
-------------------- -------------------- --------------------
| TABLE: ALL LINKS | | TABLE: ALL LINKS | | TABLE: ALL LINKS |
-------------------- -------------------- --------------------
| ID | URLS | | ID | URLS | | ID | URLS |
-------------------- -------------------- --------------------
| 1 | url1 | | 3 | url3 | | 1 | url1 |
-------------------- -------------------- --------------------
| 2 | url2 | | 1 | url2 |
-------------------- --------------------
| 3 | url3 | | 1 | url3 |
-------------------- --------------------
这就是我能够实现的。
User1: User2: User3:
-------------------- -------------------- --------------------
| TABLE: ALL LINKS | | TABLE: ALL LINKS | | TABLE: ALL LINKS |
-------------------- -------------------- --------------------
| ID | URLS | | ID | URLS | | ID | URLS |
-------------------- -------------------- --------------------
| 3 | url3 | | 3 | url3 | | 3 | url3 |
-------------------- -------------------- --------------------
也就是说,当用户点击一个链接时,该链接不再对所有用户显示。
但我想要实现的是,当用户点击链接时,链接将停止显示,仅对点击链接的用户显示.....
这是我必须显示表格的代码:
SELECT
*
FROM
links
LEFT JOIN
blockuser ON blockuser.idLinks = links.id
WHERE
blockuser.idLinks IS NULL
解决方案
为什么你“必须”使用 SQL 来显示表格?
SELECT * FROM links LEFT JOIN blockuser ON blockuser.idLinks = links.id WHERE blockuser.idLinks IS NULL
基本上使用子查询:
SELECT *
FROM links
WHERE id NOT IN
(SELECT idLinks FROM blockuser WHERE idUsers = 2)
或者
SELECT *
FROM links
WHERE id NOT IN
(SELECT idLinks FROM blockuser WHERE users = 'user2')
推荐阅读
- c++ - 从电影代码看不清楚。这合法吗?
- python - Django 3 OperationalError:没有这样的表'web_user'
- r - dplyr::mutate 是否适用于记录样式的列?
- ssl - NGINX 预留代理 SSL_ERROR_RX_RECORD_TOO_LONG
- java - Android:用于设置 NestedScrollView 最大高度的自定义类不起作用(没有滚动条)
- node.js - 在 Nodejs 中,我不断收到 Sequelize.js - “未关联到”错误
- python - 如何在python中使用两个或多个分隔符和split()
- java - 如何在没有登录功能的情况下在 android 中使用 firebase 创建一个基于回合的应用程序?关闭
- sql - 动态运行 SQL 查询
- python - 如何在kivy窗口中放置两个按钮?