2011-05-06 41 views
2

我有一个表单,其中包含多个虚拟字段集。如何在PHP中以单一形式循环访问常见字段集?

例如,MyForm的:

Name1 
Age1 
Location1 

Name2 
Age2 
Location2 

Name3 
Age3 
Location3 

Submit 

如果我允许用​​户在客户机上动态地创建多个场组哪能通过其中名称(x)被设置,并执行用于每个的类似操作的所有字段集环组,使用整数(1,2,3等)作为唯一标识符?

我想指定一次动作,循环遍历并且每次都根据字段集的数量更改所使用的变量。

现在,我做手工3个硬编码fireldsets,但它不会扩展:

伪代码:

if($name1 is set) { 
do something using $age1 and $location1 
} 
if($name2 is set) { 
do something using $age2 and $location2 
} 
if($name3 is set) { 
do something using $age3 and $location3 
} 

谢谢!

回答

1

做这样的:

$maxIndex = 3 

    for(var $i=1; $i<=$maxIndex; $i++){ 
     $name = $_POST["Name$i"]; 
     $age = $_POST["Age$i"]; 
     $location = $_POST["Location$i"]; 
     //do something using $name, $age and $location 
    } 

希望这有助于。欢呼声

+0

谢谢。你可以用这样的变量名称来使用$ i吗?在我的测试中,它不工作。 – Dan 2011-05-06 11:40:23

+0

D'oh - 单引号。这个解决方案基于我的JS如何在客户端设置的其他考虑因素。 – Dan 2011-05-06 13:35:38

0

你应该为你的输入字段使用数组。然后,你可以创建任意数量的以下模块:

<input name="name[]" /> 
<input name="age[]" /> 
<input name="location[]" /> 

在PHP中,你可以通过这些参数的循环:

foreach($_POST['name'] as $key => $value) { 
    $name = $_POST['name'][$key]; 
    $age = $_POST['age'][$key]; 
    $location = $_POST['location'][$key]; 
} 
3

你可以命名你的元素name="name[1]",name="name[2]"等等。

,并在PHP做这样的事情:

for($i=1;$i<=count($name);$i++){ 
// do the stuff. 
} 
0

您可以使用数组在PHP制作

在首先从FOME的,你可以在行动的形式使用

<?php 
//n is no of records u want at one time 
$available = $n; 

for($i=1; $i<=$available; $i++){ 
?> 

Name <input type=hidden name="pname<?=$i?>" value=<?=$pid?>> 

Age<input type=text name="age<?=$i?>" /> 
Location<input type=text name="age<?=$i?>" /> 
<?php 


} 
?> 

你可以同时用于保存这些多个记录

<?php 
$available_count = $n; 

for($i=1; $i<=$available_count; $i++){ 
     $pname = "pname".$i; 
     $age = "age".$i; 
     $location = "location".$i; 


     $pname1 = trim($_POST[$pname]); 
     $age1 = trim($_POST[$pname]); 
     $location1 = trim($_POST[$location]); 
    //now you can insert these values into table/views 

    } 
    ?> 

希望你会找到更好的帮助...