Php 处理动态表单内容的更好做法是什么?
我设计了一个包含动态内容的表单 比如说,, 表单有一个用于纸张名称的文本字段和一个用于纸张链接的文本字段。 用户最多可以添加十个纸张名称和纸张链接 每个纸张名称和纸张链接的id如下所示: papername01,paperlink01,…,papername10,paperlink10 这些ID是由JavaScript动态创建的。换句话说,如果用户没有单击“添加纸张”按钮并提交表单,服务器将收到的唯一字段是paperlink01和papername01 现在,问题是如何更好地设计服务器PHP脚本来处理提交的表单内容Php 处理动态表单内容的更好做法是什么?,php,Php,我设计了一个包含动态内容的表单 比如说,, 表单有一个用于纸张名称的文本字段和一个用于纸张链接的文本字段。 用户最多可以添加十个纸张名称和纸张链接 每个纸张名称和纸张链接的id如下所示: papername01,paperlink01,…,papername10,paperlink10 这些ID是由JavaScript动态创建的。换句话说,如果用户没有单击“添加纸张”按钮并提交表单,服务器将收到的唯一字段是paperlink01和papername01 现在,问题是如何更好地设计服务器PHP脚本
<div id="divDummy001">
<div id="paperTitle001Fld">
<label for="papertitle001">Title of Paper 001</label>
<div>
<input type="text" size="16" value="" id="papertitle001" name="papertitle001"/>
</div>
</div>
<div id="paperURL001Fld">
<label for="paperurl001">Paper Link 001</label>
<div>
<input type="text" size="96" value="" id="paperurl001" name="paperurl001"/>
</div>
</div>
</div>
文件001的标题
纸张链接001
当用户单击Add按钮时,将创建一个新的div,唯一的区别是ID将增加1。您可以使用
[]
将JS命名为元素。请参阅,以了解正常操作方式的说明:
<form method="post">
I speak the following languages:
<input type="checkbox" name="lang[ ]" value="en">English<br />
<input type="checkbox" name="lang[ ]" value="fr">Français<br />
<input type="checkbox" name="lang[ ]" value="es">Español<br />
</form>
我讲下列语言:
英语
法兰西
Español
在接收代码中:
<?php
$langs = $_POST['lang'];
// Note that $snacks will be an array.
foreach ($langs as $lang) {
echo "$lang<br />";
}
?>
您还可以使用
多次以这种方式命名文本输入。然后可以将名称作为数组处理
但要注意:ID必须是唯一的,名称不必是唯一的。你应该得到类似HTML的东西
<input type="text" id="papername01" name="papername[]">
<input type="text" id="papername02" name="papername[]">
[etc]
[等]
使用数组。创建名为papername[1]、papername[2]
的文本字段,然后它们将在PHP脚本中显示为数组。为什么不发布一个数组
做一个普通的表单提交,然后在服务器端,您可以像其他PHP数组一样迭代POST
ed数组
您只需定义HTML元素的名称
属性,并附加[]
:
<input type="text" name="papername[]" value=""/>
您的PHP应该如下所示:
<?php
if(isset($_POST['papername'])) {
foreach($_POST['papername'] as $papername) {
//do something with $papername...
}
}
?>
你好,雅各布,谢谢你的评论。如果我理解正确,使用papername[],我将丢失用户提交的订单。我需要保留不同纸张之间的差异。@q0987,您可以在数组中放置键,如papername[1]
,然后再papername[2]
,等等。这可以让您保留原始键,从而保留原始顺序。您好,Mchl,如果我使用papername[1]作为我的第一个纸张名称,我在使用foreach函数时有问题吗?因为它以0开头??谢谢不,你不需要。foreach从数组中的第一个元素开始。不在乎它有什么钥匙。