在for循环中传递表单信息

时间:2013-09-10 16:50:56

标签: php forms for-loop

也许这是一个愚蠢的问题,但我想知道是否可以将带有表单的信息传递给for-loop。

问题如下: 信息的传递有效,尽管他只通过了最后一个循环。例如,如果我单击循环2 ($i = 2)的提交按钮。命令$_POST['titel']将仅记住上一循环($i = $numact-1)中的信息,而不记住循环2 ($i = 2)中的信息。

例如,如果titel [0] = test0,titel [1] = test1,titel [2] = test2。然后点击titel[0]下方的提交按钮,他会传递来自titel[2]的信息。有没有一种简单的方法来解决这个问题?

我有以下代码(为了简单起见,我缩短了它);

<?php 
for ($i = 0; $i <= $numact-1; $i++) {

    echo "<tr><td width='150'>
        <input type='text' name='titel' value='$titel[$i]' />
        </td></tr>
        <tr><td><input type='submit' name='submitreg' value='Toon activiteit'/>
        </td></tr>";                        
}
?>

3 个答案:

答案 0 :(得分:0)

你一遍又一遍地使用相同的参数名称(name = titel - 你有一个类型,可能意味着写为'title')所以当表单提交时 - 只传递一个值。

您可以通过将参数传递为:

来轻松解决此问题
...
echo "<tr><td width='150'>
<input type='text' name='titel$i' value='$titel[$i]' />
</td></tr>
<tr><td><input type='submit' name='submitreg' value='Toon activiteit'/>
</td></tr>"; 
...

并将其另读为title0title1等。

答案 1 :(得分:0)

this post所示,只需在索引周围放置括号即可传入数组。 PHP将为您重建数组。

此外,您可能希望在表格末尾提交,而不是在每行之后提交。您的代码应如下所示:

<?php 
for ($i = 0; $i <= $numact-1; $i++) {
    echo "<tr><td width='150'>
    <input type='text' name='titel['.$i.']' value='$titel[$i]' />
    </td></tr><tr><td><input type='submit' name='submitreg' value='Toon activiteit'/>
</td></tr>";
}
?>

这种方法的优点是,如果您选择使用不同的值,它更具可扩展性。然而,Edson Junior的方法稍微简单一些。

答案 2 :(得分:0)

您可以将name属性更改为name=titel[],以便PHP自动将其转换为数组。没有必要在title []中指定索引。

例如:

<input type="text" name="titel[]" value="x" />
<input type="text" name="titel[]" value="y" />
<input type="text" name="titel[]" value="z" />

当您提交表单时,PHP会将其转换为

"title" = array (
    0 => "x",
    1 => "y",
    2 => "z"
);

如果您需要检查点击了哪个按钮,可以将输入类型=“提交”更改为<input type="button" name="submitreg" class="submitreg" id="whatever_you_want_but_has_to_be_unique" />。 在循环之外,添加另一个输入,它将具有按下的按钮的值。

<input type="hidden" id="buttonPressed" name="buttonPressed" value="" />

然后添加此代码(您需要将jQuery库导入页面,以便它理解下面的代码,这是jQuery,这里是Docs

<script type="text/javascript">
$(function(){
    $("button.submitreg").live("click", function(){
        var buttonPressed = $(this).attr("id");
        ("input#buttonPressed").val(buttonPressed);
    });
}
</script>

您需要做的就是获取buttonPressed值,您将知道按下了什么按钮。