在线测验使用php和mysql(单选按钮)

时间:2012-12-13 16:52:56

标签: php mysql

请帮助,我正在开发一个在线测验应用程序。将从数据库中选择所有问题和答案。我有问题的地方是从单选按钮获取值是否检查。 bellow是从数据库生成问题和答案的代码。

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];
   } 
}

2 个答案:

答案 0 :(得分: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只是一个包含你提交的表单的数组。如果您有名称textfield,您将使用:

echo $_POST['name'];

回应它。

尝试

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

您将看到您的表单是如何组织的。链接到documentation

答案 1 :(得分:-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>";
        }
    }
}
?>

它运作得很好,但它会给出有效的结果吗?