Как я могу перебрать общие наборы полей в одной форме в PHP? - PullRequest
2 голосов
/ 06 мая 2011

У меня есть форма, которая содержит несколько виртуальных наборов полей.

Например, MyForm:

Name1
Age1
Location1

Name2
Age2
Location2

Name3
Age3
Location3

Submit

Если я позволю пользователю динамически создавать дополнительные наборы полей на клиенте, как я могуперебрать все наборы полей, где установлено имя (x), и выполнить аналогичное действие для каждой группы, используя целое число (1,2,3 и т. д.) в качестве уникального идентификатора?

Я хочу указать действия один раз,циклически проходите и каждый раз меняйте используемые переменные в соответствии с номером набора полей.

Сейчас я делаю это вручную для 3 жестко закодированных наборов fireld, но он не масштабируется:

Псевдокод:

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
}

Спасибо!

Ответы [ 4 ]

3 голосов
/ 06 мая 2011

вы можете назвать ваши элементы name="name[1]", name="name[2]" и т. Д.

и в php сделайте что-то вроде:

for($i=1;$i<=count($name);$i++){
// do the stuff.
}
1 голос
/ 06 мая 2011

Сделай так:

    $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 голосов
/ 06 мая 2011

Вы можете использовать массив в 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

  }
  ?>

Надеюсь, вы найдете лучшую помощь ...

0 голосов
/ 06 мая 2011

Вы должны использовать массивы для полей ввода.Затем вы можете создать любое количество следующих блоков:

<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];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...