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

使用PHP处理可扩展表单的可能方法有哪些?,php,javascript,mysql,forms,Php,Javascript,Mysql,Forms,我有一个数据库,它有两个表,其中一个表包含返回到第一个表的外键。与此类似: Table1 id description some other information Table2 table1ID Some other information 对于每个表1,表2中可以有任意数量的条目。我需要创建一个表单,允许用户将新项目插入表1和表2中。我在很多项目中都遇到过这个问题。其中之一就是保存角色扮演游戏的统计数据。表1为车辆表

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

Table1
    id
    description
    some
    other
    information

Table2
    table1ID
    Some
    other
    information
对于每个表1,表2中可以有任意数量的条目。我需要创建一个表单,允许用户将新项目插入表1和表2中。我在很多项目中都遇到过这个问题。其中之一就是保存角色扮演游戏的统计数据。表1为车辆表,表2为车辆武器信息

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

我能想到的另一种方法是有多个页面。第一页将允许用户输入一般数据,然后他们可以点击下一页输入武器数据。每次他们击中下一个,他们就可以进入一个新的武器。最后,完全输入的车辆将显示给他们,他们将能够返回并根据自己的选择编辑车辆的每个部分,并在准备就绪后提交

一方面,这种方法比第一种方法需要更多的处理。它涉及的范围要大得多。这将要求在用户操作车辆时,将车辆创建的每个步骤添加到数据库中以进行临时存储。必须将其标记为不完整。我必须创建某种cron任务来清除所有未完成的车辆

另一方面,它不使用javascript

有没有其他方法来处理这种情况?如果不是,这两种方法中哪一种被认为是更好的做法?在第二种方法中,是否有一种方法可以在不临时将数据添加到数据库的情况下在表单页面之间保留数据


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

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

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

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

让我们面对事实,HTTP没有强大的数据持久性功能


祝你好运

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

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

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

让我们面对事实,HTTP没有强大的数据持久性功能


祝你好运

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

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


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

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

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


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

会话和cookie是获取半临时数据的方法,在必要时可以轻松地重新获取。对于更敏感的数据,您可能需要创建一个专用于存储敏感临时数据的数据库。见鬼,你甚至可以重写session\u save\u处理程序来将会话数据保存到数据库中。我在考虑会话或cookie,但是,当我遇到这种情况时,通常会有大量的数据。使用会话或cookie进行数据持久化涉及到多少问题?我看到的大多数统计数据都将JavaScript应用于95%以上的浏览器中。我通常认为,如果我打算使用JavaScript来做一些有帮助的事情,比如添加功能,我可以在noscript标签中放一条消息,要求他们为站点启用脚本。一点也不多。会话存储在内存中,其中DB是一个完整的I/O操作。同样,如果存储大量数据,我实际上会使用卸载-重新加载选项。在一个页面中获取的数据太多,从而降低了加载速度。打断它,用户会感谢你的。@Frank,我完全同意。我甚至这样想:强迫用户使用JavaScript和所有其他好东西(Flash等)。快到2010年了!没有理由不使用完全兼容的浏览器!会话和cookie是获取半临时数据的一种方式,在必要时可以轻松地重新获取这些数据。对于更敏感的数据,您可能需要创建一个专用于存储敏感临时数据的数据库。见鬼,您甚至可以重写会话保存处理程序来将会话数据保存到DB.I w