【问题标题】:How can I show results in a select input, based on values shown in a seperate table?如何根据单独表格中显示的值在选择输入中显示结果?
【发布时间】:2019-11-05 16:59:40
【问题描述】:

我有三张桌子,我只是在寻找一种方法来完成这项工作。

tbl_campaigns 具有“id”和“campaign”列。这个相当简单,它只是带有自动递增 ID 号的广告系列名称,因此它们具有唯一的 ID。

tbl_users 有一个“id”列,因此每个用户都有一个唯一的 ID 号,这是标准的东西。

tbl_permissions 在创建新用户时创建一个新行。这意味着它的“id”列具有与“tbl_users”中用户的 ID 匹配的唯一 ID 值。每次创建新的时候,这些列都被命名为匹配一个活动的 ID 值,例如,列“campaign_1”与 ID 为 1 的 'tbl_campaigns' 中的活动相关。想法是这个表数据用 1 或 0 填充。

如果 ID 为 1 的行的“campaign_1”列的编号为 1,则 ID 为 1 的用户被批准参加活动表中 ID 为 1 的活动。如果它是 0,那么他们不被批准。相同的逻辑适用于“campaign_2”、“campaign_3”等列。

无论如何,我遇到的问题是在前端显示此信息,因为我只希望用户能够在下拉列表中看到他们获准运行的广告系列。当用户登录时,它会将他们的用户 ID 存储在会话中,我不确定是否有办法使用这种方法。

有没有办法解决这个问题?请注意,我已经在程序 PHP 中完成了这项工作,因为我还处于早期阶段,所以如果有人有这些方面的解决方案,我将不胜感激。对不起,如果它有点混乱。我知道这有点笨拙,但我只想让它先工作。

【问题讨论】:

  • 样本数据、所需结果和适当的数据库标签都会有所帮助。
  • “例如,“campaign_1”列与 'tbl_campaigns' 中 ID 为 1 的广告系列相关” 不要这样做。作为应用日常操作的一部分(即插入新的广告系列行时),您永远不必修改架构(即添加新列)。而是创建一个join table。跨度>
  • 干杯亚历克斯,已编辑,因此不必再这样做了。我确实认为这是一种不好的做法,但不完全确定是否可以绕过它。

标签: php sql procedural


【解决方案1】:

我认为您的架构需要改进,因为每次添加新广告系列时表结构都不应更改。

  1. 保持表 tbl_campaigns 和 tbl_users 原样
  2. 创建包含 4 个字段(id、user_id、campaign_id 和权限)的表 tbl_permissions

要检查用户是否有权限,请使用如下查询:

SELECT permission FROM tbl_permissions WHERE user_id = ? AND campaign_id = ?

因此,每次创建活动时,都会将相应的记录添加到 tbl_permissions 表中。无需添加新列。

【讨论】:

  • 感谢 Manny,这是一种更好的方法。我会试一试。
【解决方案2】:

我认为这样做的最佳做法如下:
- 创建 HTML 以显示给用户(如果您没有它,请告诉我,以便我可以制作一个您可以使用的 HTML)
- 创建负责调用 PHP 文件的 JS 存档并在您的 HTML 中显示结果(如果您不知道如何制作,请告诉我,以便我可以帮助您)
- 创建 PHP 文件,这将负责查询您的数据库并给出您选择的结果(如果您不知道如何制作,请告诉我)

完成这项工作很容易,如果您需要更多帮助,请告诉我。

【讨论】:

  • 感谢您对此的贡献。我已经准备好了所有这些,但我想我现在已经足够了。 :)
猜你喜欢
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 2011-04-21
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多