首页 > 解决方案 > 单击 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

标签: mysql

解决方案


为什么你“必须”使用 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')

用户 1

用户 2

用户 3


推荐阅读