【问题标题】:How to store different type of data depending on selected option如何根据所选选项存储不同类型的数据
【发布时间】:2017-09-25 16:29:44
【问题描述】:

我目前正在用 PHP 创建一个竞赛系统。对于数据库,我使用 MySQL。

当用户想要提交时,他可以选择两种类型的条目:

  1. 链接到程序
  2. 程序本身。

在我的网站上,用户还可以使用我在网站上提供的完整编码环境来创建程序。然后将这些程序存储到我的数据库中的表scripts 中,该表具有列

  • user(代表用户ID)
  • script_id(代表脚本ID)
  • name(代表程序名称)
  • script(LongText代表程序本身的代码)

现在,如果用户准备提交,他可以决定他的提交是指向某个程序的链接还是他之前在我的网站上创建的程序。

如果他选择完整的程序,他必须从下拉列表中选择一个。

我的问题都是关于服务器端的。

当用户点击“提交”时,一个 JSON 格式的字符串,包含提交的 type01)和 payload(包含链接或 @987654335 的长字符串@)。

现在在服务器端,我得到了这些信息,我想存储用户的提交。 现在是真正的问题:

如何存储这些信息,以便轻松访问提交的类型及其值(链接或完整源代码)?

我不想再次保存脚本的整个源代码,因为用户已经这样做了,它存储在表scripts中。

我想过这样的事情:

*---------------------------------*
| submission_type |     value    |
*---------------------------------*
|        0        |   google.com |
*---------------------------------*
|        0        |   stackoverf |
*---------------------------------*
|        1        |       3      |
*---------------------------------*
|        1        |      10      |
*---------------------------------*

但这会有点混乱,因为我不想在value 列中有一个字符串一个int。

您认为存储这些未知类型数据的最佳方式是什么?

【问题讨论】:

  • StackOverflow 不是教程网站,也不是搜索引擎替代品。我们可以提供帮助,但首先编写代码是您的工作。先Put some efforts,然后解释清楚MCV example。另请阅读 How to ask,如何使用 reward helpful answersStackOverflow's Do and Don'ts
  • @MarcinOrlowski 这不是我的第一个问题。我在这个问题上做错了什么?
  • @MarcinOrlowski 另外,这个问题与代码无关。这是关于数据库设计以及解决这个问题的最佳方法。
  • 如果您在问题下方点击close,那么对我而言,您的问题符合此处显示的最后两个原因之一。

标签: php mysql database-design relational-database


【解决方案1】:

在数据库中你只需要一个表scripts和一个表submission

在 PHP 页面中,当用户选择 "Link to a program" 调用添加提交函数时:USER_ID, SCRIPT_ID

但如果用户选择“程序本身”,您首先调用一个函数来使用代表程序本身代码的LongText 创建脚本。之后你现在有一个script_id,所以像上面一样调用提交函数。

【讨论】:

  • "在 PHP 页面中,当用户选择链接到程序时,您调用添加提交函数:USER_ID, SCRIPT_ID" 但是,如果我只存储一个 script_id,我该如何存储链接,即使那里没有脚本?!
  • 链接到程序不是您数据库中的脚本吗?也许你应该提供一个更好的例子来说明你拥有什么和你需要什么。现在你只说你尝试了什么
猜你喜欢
  • 2020-02-18
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2018-07-11
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多