1

也许这是一个愚蠢的问题,但我想知道是否可以通过表单将信息传递到 for 循环中。

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

例如,如果标题 [0] = test0,标题 [1] = test1,标题 [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>";                        
}
?>
4

3 回答 3

0

您一遍又一遍地使用相同的参数名称(名称=标题-您有一个类型并且可能打算写为“标题”),因此当表单提交时-只会传递一个值。

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

...
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等等。

于 2013-09-10T16:53:59.190 回答
0

正如在这篇文章中看到的,您可以通过在索引周围放置方括号来传入一个数组。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 的方法稍微简单一些。

于 2013-09-10T16:59:44.327 回答
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"
);

如果您需要检查单击了哪个按钮,可以将输入 type="submit" 更改为<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 值,然后您就会知道按下了哪个按钮。

于 2013-09-10T17:06:06.003 回答