如何使用 PHP 处理多个表单输入
Posted
技术标签:
【中文标题】如何使用 PHP 处理多个表单输入【英文标题】:How to process many form inputs with PHP 【发布时间】:2019-04-19 03:13:08 【问题描述】:我正在为一家分销公司构建一个管理面板,他们要求有一个页面,他们可以在其中为所有客户添加订单,因此我生成了一个表单,该表单为系统中的每个产品和每个客户动态添加输入行已创建(参见)
|问题是,添加的每个产品/客户端都会添加越来越多的输入,我已经不得不增加 max_input_vars,但这很容易达到数千个,如果不是数万个输入,这会减慢应用程序,我的问题是,处理所有这些输入的最佳方法是什么,或者实现此功能的另一种方法是什么?
【问题讨论】:
1.不要让他们添加数以万计的输入。这太疯狂了。给他们一个合理的硬限制。 2. 我只是做了一些非常相似的事情,我只是遍历产品行并将它们手动添加到表单数据中,我的只是一个联系表单,所以更容易一些,但概念是一样的。 表单是从产品表中动态创建的,因此无论添加多少产品,都将插入表单中,并且必须显示所有产品,以便他们可以将该产品添加到订单中,所以我不能做限制,你能解释一下为什么迭代产品行会有帮助吗? 在“动态”表代码中添加如下逻辑:if( rows * columns > field_limit ) raise_error
【参考方案1】:
我会重新考虑为每个客户端添加的输入字段数量增加一个最大值,或者为生成输入字段的每个客户端创建一个单独的页面。
如果您确实想继续,您可能需要考虑通过在脚本顶部添加 ini_set('maximum_execution_time', '60');
来延长默认为 30 秒的 max_execution_time
。
在服务器端处理所有这些行。将您的输入字段数组保存为客户名称作为键:<input type="text" name="your_value[client1][column1]" />
并为您的下一个客户执行<input type="text" name="your_value[client2][column1]" />
为每一列增加列。
然后在服务器端你可以执行一个 foreach 循环来获取值。
foreach($_POST[your_value] as $client)
foreach($client as $key => $val)
echo $val;
【讨论】:
这会将每个数组视为请求中的一个变量吗? 您可以为每个客户端创建一个变量。您的服务器端阵列将如下所示:array(2) ["client1"]=> array(2) ["column1"]=> string(6) "value1" ["column2"]=> string(6) "value2" ["client2"]=> array(2) ["column1"]=> string(6) "value1" ["column2"]=> string(6) "value2"
我明白,但是为什么这有助于提高速度,现在所有的输入都这样命名 [name="clientId_ProductID"] 所以我喜欢你的方法,因为它更干净但是会增加速度或将每个数组及其内容视为一个变量
不会的。正如@RickCalder 提到的,给你的用户一个硬性限制。由于数以万计的输入是疯狂的,并且肯定会使您的应用程序崩溃。【参考方案2】:
使用 javascript(或客户端)仅提交已更改的数据。
如果图表中填充了存储的数据(我假设在数据库中),那么当条目更改时,您可以对 php 脚本使用 AJAX 请求,以便将更改的数据保存到数据库中。
【讨论】:
以上是关于如何使用 PHP 处理多个表单输入的主要内容,如果未能解决你的问题,请参考以下文章