Php 如何在多个表中添加/编辑/管理相关数据

Php 如何在多个表中添加/编辑/管理相关数据,php,mysql,user-interface,Php,Mysql,User Interface,我有几个表需要为其创建管理界面 Table 1 Table 2 Table 3 Table 4 Table 5 每个表的内容都反映在字段中它所属的父表中…所以 表2有一个与表1中的行相关的字段,表3有一个与表2相关的字段,依此类推 什么是最好的方式来呈现给用户,让他们不必记住身份证号码。例如,如果他们想在表3中添加一个新条目,他们必须选择表2中要链接的行 该关系仅扩展表1之后的一个级别。因此,在表5中创建一组新的选项,需要在表1中创建一个条目,在表2中创建一个条目,将其链接到表1,在表3中创建

我有几个表需要为其创建管理界面

Table 1
Table 2
Table 3
Table 4
Table 5
每个表的内容都反映在字段中它所属的父表中…所以

表2有一个与表1中的行相关的字段,表3有一个与表2相关的字段,依此类推

什么是最好的方式来呈现给用户,让他们不必记住身份证号码。例如,如果他们想在表3中添加一个新条目,他们必须选择表2中要链接的行

该关系仅扩展表1之后的一个级别。因此,在表5中创建一组新的选项,需要在表1中创建一个条目,在表2中创建一个条目,将其链接到表1,在表3中创建一个条目,将其链接到表2,在表4中创建一个条目,将其链接到表3,最后是在表5中创建一个新选项

因此,我的问题是与用户界面相关的,关于向用户呈现此信息的最佳方式。或者,这种系统叫什么,所以我可以搜索其他示例


谢谢。

从您所说的来看,一个表中的一个条目如果没有其他表中相应的条目是不可能存在的,对吗

在这种情况下,您可以提供一个类似于向导的界面,提示用户在每个新向导页面上输入每个表的数据,从表1的数据开始。然后,一旦收集了所有数据,您就可以触发一系列更新语句,其中表1中记录的id将被重新用于表2-5中的插入。(根据您的表设计,您可以使用LAST_INSERT_id()获取此id)

或者,如果不想使用多个insert语句,可以使用可更新视图(如果使用的是MySQL 5)

或者,您可以有一个表结构,其中表X中的记录必须有表Y中的链接记录(其中Y
在这种情况下,您仍然可以使用向导,但可以从实际要为其创建信息的表开始,然后让向导提示输入上一个表的数据,依此类推,直到它提示输入表1的数据为止。因此,如果您确实希望为表4创建数据,请让向导先提示该数据,然后提示为表3创建数据,依此类推,直到表1。然后像以前一样输入数据。

听起来像是我以前最喜欢的主细节布局的问题。每个表在同一窗口中显示的单独窗格(窗格1到5)中表示。对于表1至表5,窗格按顺序从上到下和/或从左到右排列。在每个窗格中,始终只有一条“活动”记录,以某种方式为用户标记。每个窗格的内容由其上方/左侧窗格中的活动记录确定。因此,窗格N显示了窗格N-1中所示的表N-1的活动记录的表N记录。窗格中的活动记录是表中最后一次有焦点的记录(在任何字段中)。因此,例如,用户可以通过单击窗格N-1中某个记录的任何字段来显示表N-1中某个记录的表N记录。窗格N-1中的活动记录更改后,将异步启动对窗格N的查询(请不要使用“刷新”按钮)。所有非只读字段都应就地编辑。“保存”按钮或菜单项可以批量插入/更新所有表的所有记录(或者,如果带宽可以处理,则可以在编辑字段并焦点离开字段时触发更新)

因此,要向表N添加新记录,用户将焦点放在表1到表N-1的正确记录上,然后将焦点放在窗格N中(例如,单击其中的任意位置),并选择添加记录菜单项。这将在窗格N中插入一条新的空白记录,供用户填写。用户可以继续选择“添加记录”以使用活动表N-1记录的所需记录填充窗格N。在任何时候,用户都可以使用相同的过程为新创建的表N记录添加表N+1记录,方法是单击窗格N+1并选择添加记录。此外,用户可以随时编辑任何窗格中记录的字段。(或者,您可以为每个表设置单独的“添加记录”菜单项,这样用户就不用将焦点转移到某个窗格来添加记录,但许多菜单项可能会变得过于杂乱;另一种方法是在每个窗格中始终准备一条空白记录供用户填写,从而无需使用“添加记录”菜单项目)

这种设计为用户提供了最大的灵活性,允许他们以任何顺序添加、删除和更新记录,方便任何表在任何时间进行。由于该窗口在编辑之间“记住”活动记录,因此它也非常有效,消除了从表1到N-1记录的繁琐重新选择,从而为特定的表N-1记录编辑一系列表N记录(与向导不同)。它以直观的分层布局在单个窗口中显示所有表的所有记录,便于查看和浏览数据,并最大限度地减少窗口或页面之间的导航(同样,与向导不同)

五个窗格对于一扇窗户来说是很多的,但不是太多。但是,如果您为用户提供了调整大小和隐藏/显示每个窗格的简单方法,则会有所帮助。因此,如果用户需要处理表N-1中记录的一组表N记录,她或他可以隐藏所有其他窗格,将窗格N扩展到全窗口大小以最小化滚动。此外,如果用户不需要研究或编辑某些表的记录,请不要将它们放在它们自己的窗格中,而是将每个记录作为结构中相邻表的字段显示。例如,如果不允许用户编辑表N,则可以在窗格N+1中有一个显示函数的字段,而不是窗格N