也许这是一个愚蠢的问题,但我想知道是否可以将带有表单的信息传递给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>";
}
?>
答案 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>";
...
并将其另读为title0
,title1
等。
答案 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值,您将知道按下了什么按钮。