嗨,我似乎无法获得循环语句生成的单选按钮的值。即使有相应的单选按钮名称,$ _POST方法也不起作用。
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$dbname = "test";
$i = null;
$conn = new mysqli($servername, $username, $password, $dbname);
for ($t=0;$t<4;$t++){}
$sql = "SELECT * FROM questions LIMIT $t";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$i = 0;
echo " <form action='radio.php' method='post'><table>";
echo "<tr>
<th>Questions</th>
<th>Answers</th> </tr> <tr>" ;
while($row = $result->fetch_assoc()) {
$ans=array($row['1'],$row['2'],$row['3']);
shuffle($ans);
echo $row['question']."<br>";
foreach ($ans as $choice) {
echo "<input type='radio' name='radio$i' value = '$choice'>".$choice."<br>";
} unset($choice);
echo " </tr>";$i++;
}
echo "</table> <input type = 'submit' value = 'finished'></form><br>";
echo "";
} else {
echo "0 results";
}
$conn->close();
?>
总是导致
注意:未定义的索引:C中的radio0:\ xampp \ htdocs \ Bootstrap \ radio.php here is an example output 即使索引 radio0 存在于html的元素中
答案 0 :(得分:0)
让我们一点一点地浏览代码
for ($t=0;$t<4;$t++){}
这是一个空的for循环。括号{
和}
应包含循环的操作。由于它们是空的,所以在这个循环中什么也没发生
$sql = "SELECT * FROM questions LIMIT $t";
你不能在这里使用$ t变量,因为它超出了范围。即使你可以,我怀疑这是你真正想要的,因为LIMIT
只会限制你可以获得的回复数量。
$result = $conn->query($sql);
您尚未定义连接对象(假设您提供了所有代码)。
$i = 0; echo " <form action='radio.php' method='post'><table>";
在同一条线上定义这些东西真的很糟糕(虽然有可能)。
<th>Answers</th> </tr> <tr>" ;while($row = $result->fetch_assoc()) {
再次,非常糟糕的练习 - 很难阅读。
$ans=array($row['1'],$row['2'],$row['3']);
您最有可能使用整数索引而不是字符串。此外,请记住数组是0
- 索引。
foreach ($ans as $choice) {echo "<input type='radio' name='radio$i' value = '$choice'>".$choice."<br>";
} unset($choice);
echo " </tr>";$i++;}
您没有在循环中定义任何$i
变量,因此您无法使用$i
变量