0

我有一个包含很多列表框的表单。提交表单后,我可以毫无问题地使用 PHP 循环处理所有列表框。但我正在寻找一种方法来只抓取那些已更改的内容,因为它可以节省大量的处理时间。

假设我有一百个列表框。他们的 ID 是“lb_1”...“lb_100”。我会像这样循环遍历它们:

foreach($_POST as $key=>$value) {
   if (substr($key,0,3)== "lb_" ) {
      ...do something...
   }
}

然而,该循环将对所有一百个列表框值做一些事情。我只想抓住那些实际发生变化的。

有任何想法吗?

4

2 回答 2

0

好的,感谢您的提示,我想出了这个客户端解决方案:

我在每个包含原始值的列表框之前添加了一个隐藏的表单文本字段。隐藏字段和加框列表以相同的唯一后缀命名,因此我知道哪个属于哪个。

当表单被传递时,PHP 循环如下所示:

foreach($_POST as $key=>$value) {
   if (substr($key,0,3)== "lb_" ) {
      if ($_POST[hidden_name] != $value) {
         setNewValue($value);
      }
   }
}

这比每次比较访问数据库要快得多,因为 $_POST 数组中的值已经可用。

谢谢你的帮助。

于 2013-04-03T16:33:51.647 回答
0

要扩展 @Tushar 给出的建议,您可以使用 Javascript 将任何未更改的字段的 Disabled 属性设置为 true。这样他们就不会存在于 POST 中。您知道哪些要禁用的唯一方法是存储初始值(在 JS 中可能是为了便于比较)。然后在表单提交时,遍历字段并禁用所有未更改的字段。

document.getElementById('lb_1').disabled = true;  // example of how to disable field

如果您愿意,我可以提供更多示例代码。

于 2013-04-02T22:36:55.987 回答