具有无限字段的表单
Posted
技术标签:
【中文标题】具有无限字段的表单【英文标题】:Form With Unlimited Fields 【发布时间】:2013-05-09 04:57:01 【问题描述】:我有一个带有 [添加字段] 选项的表单,可以添加几乎无限的项目编号和描述。
这些字段被命名为:item[]
和 desc[]
(数组的括号)。
我的问题是,我将如何使用 php 和 mysql 提交这些信息,以便将每一行(项目和描述)作为数据库中自己的行提交?
我尝试了多种方法,例如提交 item[0] 和 desc[0] 都无济于事:(
提前感谢您的所有帮助!
编辑:下面是我一直在尝试使用的...(对不起,数组不是很好...)
$count = 0
foreach ($_POST['item'] as $item)
$query = "INSERT INTO items (item, desc) VALUES ('" . $item[$count] . "', '" . $_POST['desc'][$count] . "')";
// Script simplified as it is quite complex.
if ($query_result)
$count++;
【问题讨论】:
为什么同时提交item[0]
和desc[0]
会失败?
使用 for 或 foreach 循环。同时向我们展示您尝试过的 PHP 代码。
有趣 - 我现在实际上正在构建一个几乎相同的系统。
【参考方案1】:
为了进一步帮助您,我可能会提出以下建议。
这样命名你的字段:
line[1][item]
line[1][desc]
line[2][item]
line[2][desc]
etc...
然后在 PHP 中查看数据时数据会更“有意义”:
<?php
$count = 0;
foreach ($_POST['line'] as $line => $vals)
$item = $vals['item']; /* do some kind of input validation here */
$desc = $vals['desc']; /* do some kind of input validation here */
/* if no errors, continue */
$sql = "INSERT INTO `items` (`item`,`desc`) VALUES ('$item', '$desc')";
if (mysql_query ($sql))
$count++;
?>
我发现这种方法更灵活。只是我的两分钱。
卢克
【讨论】:
【参考方案2】:您可以使用 foreach 循环遍历任一输入字段,然后访问其他字段。
foreach($_POST['item'] as $key => $item)
//your code
$desc = $_POST['desc'][$key];
编辑:根据您的代码脚本将像
$count = 0
foreach ($_POST['item'] as $key => $item)
$query = "INSERT INTO items (item, desc) VALUES ('" . $item . "', '" . $_POST['desc'][$key] . "')";
// Script simplified as it is quite complex.
if ($query_result)
$count++;
【讨论】:
这会给我 $item[0] 和 $desc[0]、$item[1] 和 $desc[1] 等吗? 是的,它会以提交的形式为您提供所有行。 虽然这行得通 - 我建议做一些不同的事情......这种方式可能会有点令人困惑,看起来和理解(即快速查看 desc 的值来自哪里)......见我对替代方案的回答。以上是关于具有无限字段的表单的主要内容,如果未能解决你的问题,请参考以下文章