Как определить массив полей формы PHP - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть вопрос.

У меня есть этот код на первой странице:

<input type="text" name="number" id="number">
<input type="submit" name="button_add" id="button_add" value="add">
<? 
$i=0;
while($number>$i) { $i++; ?>
  <div align="left">
  <input type="text" name="text[<? echo $i; ?>]" id="text[<? echo $i; ?>]" /><? } 
?>

Как определить массив полей на следующей странице, используя $_POST vars?

Ответы [ 3 ]

4 голосов
/ 03 декабря 2010

Запись в $_POST сама по себе является массивом, если вы спрашиваете:

for ($i = 0; $i < count($_POST['text']); ++$i) {
    // do something with this post:
    $_POST['text'][$i];
}

или:

foreach ($_POST['text'] as $i => $text) {
    // do something with:
    $text;
    // Note: $text === $_POST['text'][$i]
}

Не по теме

Всегда закрывайте свои элементы:

<input type="text" name="number" id="number" />
<input type="submit" name="button_add" id="button_add" value="add" />

Вы также пренебрегали закрытием <div>, обертывающим входы text[].Если вы этого не сделаете, ваш документ плохо сформирован и, хотя браузеры попытаются проанализировать документ, нет гарантии, что они сделают это так, как вы хотите.

Тип ввода по умолчанию - текст.Нет ничего плохого в том, чтобы установить для атрибута типа значение «текст», но в этом нет необходимости.

Не полагайтесь на короткие теги ;используйте полный <?php.Не на всех хостах они будут включены, и они устарели и скоро уйдут (до PHP 5 ходили разговоры об отказе от них).

Вам не нужно явно назначать индексы массивадля ваших входных имен; пустые скобки приведет к тому, что значение будет присвоено концу массива.Кроме того, '[' и ']' не являются действительными символами для идентификаторов .

<input type="text" name="text[]" id="text_<?php echo $i; ?>" />

* Цикл for более уместен , чем while цикл в вашем коде.Хотя оба делают одно и то же, они имеют разные коннотации (цикл while повторяется, в то время как некоторое статическое условие выполняется при изменяющихся обстоятельствах; цикл for повторяется в последовательности).

for ($i=0; $i < $number; ++$i) {

Все вместе имеем:

<input name="number" id="number" />
<input type="submit" name="button_add" id="button_add" value="add" />
<?php for ($i=0; $i < $number; ++$i): ?>
  <div align="left">
    <input name="text[]" id="text_<?php echo $i; ?>" />
  </div>
<?php endfor; ?>
3 голосов
/ 03 декабря 2010

Попробуйте:

foreach( $_POST['text'] as $key => $value){
 echo "Value for texbox # ".$key." is:". $value;
    // or whatever code you want
}

На странице форма отправляется на.

0 голосов
/ 03 декабря 2010

Я на нетбуке, и было бы неплохо написать код, не говоря уже о его тестировании.

использовать цикл и функцию post var и isset.

...