-3

请帮忙,我正在开发一个在线测验应用程序。所有的问题和答案都将从数据库中选择。我遇到的问题是从单选按钮中获取值,无论是否选中。下面是从数据库生成问题和答案的代码。

if (!isset($_POST['submit'])) {
    echo "<form method=post action='#'>";
    echo "<table border=0>";
    while ($row = mysql_fetch_array($display)) {
        $id = $row["id"];
        $question = $row["question"];
        $opt1 = $row["ans1"];
        $opt2 = $row["ans2"];
        $opt3 = $row["ans3"];
        $opt4 = $row["ans4"];
        $opt5 = $row["ans5"];
        $answer = $row["ans"];
        echo "<tr><td colspan=3><br><b>$question</b></td></tr>";
        echo "<tr><td>$opt1 <input type=radio name=q$id value=\"$opt1\"></td><td>$opt2     <input type=radio name=q$id value=\"$opt2\"></td><td>$opt3 <input type=radio name=q$id value=\"$opt3\"></td><td>$opt4 <input type=radio name=q$id value=\"$opt4\"></td><td>$opt5 <input type=radio name=q$id value=\"$opt5\">q$id</td></tr>";
    }
    echo "</table>";
    echo "<input type='submit' value='See how you did' name='submit'>";
    echo "</form>";
}

单选按钮的名称是

<input type='radio' name='q$id' value='$opt4' />

如何获取选中的单选按钮的值?还是我的 PHP 代码错了?如果选中单选按钮,我需要输出选择的内容。

if(isset($_POST['submit']))
{
    $value = $_POST[''];//the value of the radio button, i don't know what to put here
    $n = count($value);
   for($i=0; $i < $n; $i++)
   {
     echo $value[$i];
   } 
}
4

2 回答 2

0

尝试:

if(isset($_POST['submit']))
{
    $value = $_POST;//the value of the radio button, i don't know what to put here
    $n = count($value);
   for($i=0; $i < $n; $i++)
   {
     echo $value[$i];
   } 
}

$_POST[''] 错误。您只需要使用 $_POST。

你也可以在这里使用 foreach:

if(isset($_POST['submit']))
{
    $values = $_POST;//the value of the radio button, i don't know what to put here

   foreach($values as $value)
   {
     echo $value;
   } 
}

$_POST 只是一个包含您提交的表单的数组。如果您有一个名称文本字段,您将使用:

echo $_POST['name'];

回应它。

尝试

var_dump("<PRE>", $_POST);

您将确切地看到您的表单是如何组织的。链接到文档

于 2012-12-13T17:23:22.573 回答
-1

感谢您的答复。我能够拿出这段代码并且它可以工作,但我不知道我解决它的结构或方式是否合适或足够好。

 <?php
 if (!isset($_POST['submit'])) {
 echo "<form method=post action='#'>";
 echo "<table border=0>";
 while ($row = mysql_fetch_array($display)) {
    $id = $row["id"];
    $question = $row["question"];
    $opt1 = $row["ans1"];
    $opt2 = $row["ans2"];
    $opt3 = $row["ans3"];
    $opt4 = $row["ans4"];
    $opt5 = $row["ans5"];
    $answer = $row["ans"];
    echo "<tr><td colspan=3><br><b>$question</b></td></tr>";
    echo "<tr><td><input type=radio name=$id value=\"$id $opt1\">$opt1 </td><td><input type=radio name=$id value=\"$id $opt2\">$opt2 </td><td><input type=radio name=$id value=\"$id $opt3\">$opt3 </td><td><input type=radio name=$id value=\"$id $opt4\">$opt4 </td><td><input type=radio name=$id value=\"$id $opt5\">$opt5 <br>";
}
echo "</table>";
echo "<input type='submit' value='See how you did' name='submit'>";
echo "</form>";
}
?>

我所做的是将问题的 id 包含在单选按钮的值中

<input type=radio name=$id value=\"$id $opt1\">

我按照建议使用 $_POST 收集单选按钮的值,然后将值分解为两个数组,因此第一个数组将包含问题 id,第二个数组将包含单选按钮的实际值(答案)。

<?php
elseif (isset($_POST['submit']))
{
 var_dump("<PRE>", $_POST);
 $sd = $_POST;
    foreach($sd as $sd)
    {
        $tok = explode(" ", $sd, 2);
        $w = mysql_query("select * from `questions` WHERE `id` = '$tok[0]'")or die(mysql_error());
        if(mysql_num_rows($w) == 1)
        {
            $sf = mysql_fetch_object($w);
            echo $tok[1].".......".$sf->ans."<br>";
        }
    }
}
?>

它工作得很好,但它会产生有效的结果吗?

于 2012-12-13T22:34:14.830 回答