使用PHP处理可扩展表单的可能方法有哪些?

时间:2009-11-29 18:32:12

标签: php javascript mysql forms

我有一个包含两个表的数据库,其中一个表包含一个返回第一个表的外键。与此类似:

Table1
    id
    description
    some
    other
    information

Table2
    table1ID
    Some
    other
    information

对于每个table1,table2中可以有任意数量的条目。我需要创建一个允许用户在表1和表2中插入新项目的表单。我在许多项目中遇到过这个问题。在一个方面,它是扮演游戏统计数据的拯救角色。表1是车辆表,表2包含每辆车的武器信息。

我可以想到两种方法来处理这个问题。一种是以一种形式显示所有信息,并使用Javascript允许用户在需要时为每种武器添加新的子表单。然后立即处理它。然而,这有点难看,显然,依赖于javascript。所以对于那些关闭javascript的人来说,这并不友好。

我能想到的另一种方式是拥有多个页面。第一页允许用户输入一般数据,然后他们可以点击下一步输入武器数据。每当他们下次击中时,他们就可以进入新的武器。最后,完整输入的车辆将显示给他们,他们将能够返回并编辑它们所选择的每个部分,并且当它们准备好时,提交它。

一方面,这种方式比第一种方法需要更多的处理。它涉及得更多。当用户对其进行操作时,需要将车辆创建的每个步骤添加到数据库中以进行临时存储。它必须被标记为不完整。我必须创建一些cron工作来清理所有不完整的车辆。

另一方面,它不使用javascript。

还有其他方法来处理这样的情况吗?如果不是,这两种方法中的哪一种被认为是更好的做法?有没有办法在第二种方法中挂起表单页面之间的数据,而不是暂时将其添加到数据库?

我可以使用的工具是MySQL数据库,PHP,javascript,html / css(显然)和linux操作系统。

2 个答案:

答案 0 :(得分:2)

我要做的是使用javascript。从我的观点来看,现在没有多少人关闭了javascript。

但是,如果你选择不使用javascript,还有另一种方法可以避免额外的开销。

您可以尝试将第二个表格结果集存储在会话或Cookie中。

让我们面对事实,HTTP没有很好的数据持久性能力。

祝你好运!

答案 1 :(得分:1)

我会使用JavaScript。就像编译的应用程序一样,要求用户的系统满足最低要求是完全可行的,如果需要,这包括JavaScript,Flash等。

那就是说,如果你的市场主要是偏执狂和Lynx用户,那么你应该考虑另一种选择。

如果您需要存储临时数据,我不会将其放在数据库中。相反,这是一个使用会话的好地方。如果您唯一的选择是将临时数据存储在数据库表中(会话在某些环境中不可用),那么我建议将所有临时数据存储在与实际数据分开的表中,并使用MySQL的memory表引擎对于那个临时表。