我有这个PHP代码:
for($i=0;$i<3;$i++) {
echo 'Question'.$i.'</br>';
echo 'Answer..</br>';
echo '<form action="" method="POST">';
echo '<textarea name="answer"></textarea>';
echo '</br><button name="answer_button'.$i.'"><b>Answer</b></button>';
echo '</form>';
}
现在我想获得点击answer_button
的问题编号。
我能得到的最近的是:
for($i=0;$i<3;$i++) {
echo 'Question'.$i.'</br>';
echo 'Answer..</br>';
echo '<form action="" method="POST">';
echo '<textarea name="answer"></textarea>';
echo '</br><button name="answer_button"><b>Answer</b></button>';
echo '</form>';
if(isset($_POST['answer_button'])) {
echo $i;
break;
}
}
这给了我一个问题编号,但是一旦点击按钮就不会在循环中打印其他问题。
没有使用javaScript是否没有解决方案?
答案 0 :(得分:2)
这应该有效:
for($i=0;$i<3;$i++) {
echo 'Question'.$i.'</br>';
echo 'Answer..</br>';
echo '<form action="" method="POST">';
echo '<textarea name="answer"></textarea>';
echo '</br><button name="answer_button'.$i.'"><b>Answer</b></button>';
echo '</form>';
echo '</div>';
}
for($i=0;$i<3;$i++) {
if(isset($_POST["answer_button".$i])) {
echo $i;
}
}
希望它有所帮助。
答案 1 :(得分:1)
更改html标记以使用&#34;数组符号&#34;:
echo '<button name="answer_button['.$i.']" type="submit">Answer</button>';
这将导致php在收到您可以检查的表单时填充数组:
<?php
// ...
if(isset($_POST['answer_button']) && is_array($_POST['answer_button'])) {
$id = array_shift(array_keys($_POST['answer_button']));
// ...
}
这允许在单个表单中具有多个这样的按钮,并检测实际被单击的那个按钮。它起作用,因为$ _POST将包含一个带有单个元素的数组,如$id
中所示,您可以使用var_dump($_POST);
或类似内容轻松检查自己。
答案 2 :(得分:1)
我认为这就是你要找的东西。
<强> CODE 强>
<?php
echo '<form action="" method="POST">';
for ($i = 0; $i < 3; $i++) {
echo 'Question: ' . $i . '<br>';
echo 'Answer..<br>';
echo "<textarea name='answer[$i]'> </textarea></br>";
echo "</br><button name='answer_button[$i]' value='BtnPushed'> <b>Answer</b></button><br>";
if (! empty($_POST['answer_button'][$i])) echo "Last Answer: {$_POST['answer'][$i]}<br>";
echo '<hr>';
}
echo '</form>';