不同的输入名称

时间:2012-03-13 19:32:41

标签: php

我有一个包含输入字段的表单:

post_1a; post_1b; post_1c

post_2a; post_2a; post_2a

post_3a; post_3a; post_3a

<table>
    <tbody>
        <tr>
            <td><input id="new_post_a" name="post_1a" type="text"></td>
            <td><input id="new_post_b" name="post_1b" type="text"></td>
            <td><input id="new_post_c" name="post_1c" type="text"></td>
            <td><button id="add_row_btn">Toevoegen</button></td>
        </tr>
    </tbody>
</table>

我想抓住帖子,但因为这个字段是用javascript生成的,我试图捕获preg_match / explode但结果,我需要输入的值。

由于javascript,我无法更改输入名称。

有人有想法,因为我再也没有想法吗?

2 个答案:

答案 0 :(得分:0)

这个怎么样:

// start with post_1a
$i = 1;

// while post_{$i}a (and ...b and ...c) is set, do ...
while (isset($_POST["post_".$i."a"], $_POST["post_".$i."b"], 
    $_POST["post_".$i."c"]))
{
    // do something useful with the three values
    var_dump(
        $_POST["post_".$i."a"], 
        $_POST["post_".$i."b"], 
        $_POST["post_".$i."c"]
    );

    // increment $i for the next 3 inputs.
    $i++;
}

如果您可以更改输入的名称,请参阅this article以获得更清洁的解决方案。

答案 1 :(得分:0)

由于您将问题标记为PHP,我假设您将表单发布到PHP文件。

首先,我不确定您为输入字段“post_1a”,“post_1b”等命名的原因,但Basti已在上面回答过。但是,根据您对数据执行的操作,如果您只是将它们设为数组,则后端可能会更容易,那么您将拥有:

<tr>
  <td><input id="new_post_1a" name="post_1[]" type="text"></td>
  <td><input id="new_post_1b" name="post_1[]" type="text"></td>
  <td><input id="new_post_1c" name="post_1[]" type="text"></td>
</tr>
<tr>
  <td><input id="new_post_2a" name="post_2[]" type="text"></td>
  <td><input id="new_post_2b" name="post_2[]" type="text"></td>
  <td><input id="new_post_2c" name="post_2[]" type="text"></td>
</tr>

然后在后端:

<?php
$i = 1;
$post_values = array();

while ( array_key_exists("post_{$i}", $_POST) ) {
  $post_values = array_merge($post_values, $_POST['post_'.$i++]);
}