找到在php循环中生成的变量

时间:2016-02-14 14:56:36

标签: php html

我有这个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是否没有解决方案?

3 个答案:

答案 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>';

<强> 结果

Results