如何在数据库中更新无限制的表单字段?

时间:2012-08-18 10:16:57

标签: mysql database forms

我的表单结构是这样的,其中fields[]输入可以在提交表单时添加任意次。我在fields[]存储网站链接。

<input id="name" name="name" type="text" />
<input id="field_1" name="fields[]" type="text" />
<input id="field_2" name="fields[]" type="text" />
<input id="field_3" name="fields[]" type="text" />

我已设法使用下面的表结构将此数据存储在MySQL数据库中,以允许用户与无限数量的网站相关联:

Users       User_website_link     Websites
------      -----------------     ---------
Pk:UserID   Pk:ID               Pk:WebsiteId
name        UserID              Url
            WebsiteID

假设用户填写{“Jon”,“example.com”,“example1.com”,“example2.com”}

形式的以下数据

因此,在提交表格表之后会看起来像这样:

用户表:

UserID   Username
1         Jon

网站表:

WebsiteID      Url
1               example.com
2               example1.com
3               example3.com

User_website_link表:

ID   UserID    WebsiteId
1     1         1
2     1         2
3     1         3

我应该如何允许用户在提交后修改其网址?

所以我的问题是:名为John的用户想要删除example3.com并将example.com编辑为demo.com,所以我想知道如何从数据库中删除某些网站并编辑一些

2 个答案:

答案 0 :(得分:2)

您不需要user_website_link表 - 您只需将UserID放在网站表的另一列中。

但要回答这个问题:

您无需编辑条目,只需添加类似布尔is_deleted的其他列,并仅显示或使用is_deleted为false的网址。因此,您只需让用户添加额外的URL进行编辑,只需在删除时设置is_deleted即可。当然你可以在删除时删除该行,或者稍后清除已删除的行,但我认为这种方法稍微容易一些。

答案 1 :(得分:1)

就像@bearbin说的那样,有了这个结构,没有任何用途拥有该网站,所以如果一个人编辑它而另一个不想要你怎么解决这个问题。根据您的结构,您只能拥有insertdelete

要使用户拥有网站,您的结构需要更改为

Websites(WebsiteID, URL, UserID)

其中UserID是外键。在这种情况下,WebsiteID对每个用户都是唯一的。