我的表单结构是这样的,其中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
,所以我想知道如何从数据库中删除某些网站并编辑一些
答案 0 :(得分:2)
您不需要user_website_link表 - 您只需将UserID放在网站表的另一列中。
但要回答这个问题:
您无需编辑条目,只需添加类似布尔is_deleted
的其他列,并仅显示或使用is_deleted
为false的网址。因此,您只需让用户添加额外的URL进行编辑,只需在删除时设置is_deleted
即可。当然你可以在删除时删除该行,或者稍后清除已删除的行,但我认为这种方法稍微容易一些。
答案 1 :(得分:1)
就像@bearbin说的那样,有了这个结构,没有任何用途拥有该网站,所以如果一个人编辑它而另一个不想要你怎么解决这个问题。根据您的结构,您只能拥有insert
和delete
。
要使用户拥有网站,您的结构需要更改为
Websites(WebsiteID, URL, UserID)
其中UserID
是外键。在这种情况下,WebsiteID
对每个用户都是唯一的。