2

我的表单结构是这样的,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

我应该如何允许用户在提交 URL 后编辑他们的 URL?

所以我的问题是:一个叫 John 的用户想要删除example3.com和编辑example.comdemo.com,所以我想知道如何从数据库中删除一些网站并编辑一些。

4

2 回答 2

2

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

但是要回答这个问题:

您不需要编辑条目,只需添加另一个类似于 boolean 的列,is_deleted并且只显示或使用具有is_deletedas false 的 URL。因此,您只需让用户添加一个额外的 URL 进行编辑,并is_deleted在删除它们时设置。当然,您可以在删除时删除该行,或者稍后清除已删除的行,但我认为这种方法稍微容易一些。

于 2012-08-18T10:23:09.990 回答
1

就像@bearbin 说的那样,使用这种结构,没有一个用户拥有该网站,所以如果一个人编辑了它而另一个人不想要你将如何解决这个问题。使用您的结构,您只能拥有的是insertand delete

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

Websites(WebsiteID, URL, UserID)

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

于 2012-08-18T10:33:28.900 回答