在$ _post []中使用变量

时间:2011-11-15 12:39:13

标签: php

我一直在输入标签的名称部分使用变量。现在,虽然用户使用$ _post选择了访问答案,但它会将错误视为未定义的索引。告诉我如何获得所选问题的答案。

echo "<form method=\"post\" action=\"\">";
    $query=mysql_query("select q_detail,q_id from question where category=\"$value2\"",$connection);
    if(!$query)
    {
        echo mysql_error().'query failed';
    }
    $ans=1;
    while($value1=mysql_fetch_array($query))
    {
        echo "Q-$i"."&nbsp;&nbsp;";
        echo $value1['q_detail']."<br />";
        $i++;
        $qno=$value1['q_id'];
        $query1=mysql_query("select * from answer where ans_id=$qno");
        if(!$query1)
        {
            echo mysql_error().'query failed';
        }

        while($value2=mysql_fetch_array($query1))
        {
            $opt=$value2['option1'];
            $opt1=$value2['option2'];
            $opt2=$value2['option3'];
            $opt3=$value2['correct'];
            echo "<input type=\"radio\" value=\"$opt\" name=\"$ans\">";
            echo "<span class=\"margin\">$opt</span>";
            echo "<input type=\"radio\" value=\"$opt1\" name=\"$ans\">";
            echo $opt1."&nbsp;&nbsp;";
            echo "<input type=\"radio\" value=\"$opt2\" name=\"$ans\">";
            echo $opt2."&nbsp;&nbsp;";
            echo "<input type=\"radio\" value=\"$opt3\" name=\"$ans\">";
            echo $opt3."&nbsp;&nbsp;<br /><br />";
            $ans++;             
        }

    }
    echo"<input type=\"submit\" name=\"submit\" value=\"submit\">";
    echo "</form>";

5 个答案:

答案 0 :(得分:1)

您可以将输入的名称设为数组,例如:

<input type="radio" value="Blah" name="answers[]" />

在php代码中,您可以使用以下代码访问它:

foreach($_POST['answers[]'] as $answer)
{
  echo $answer;
}

答案 1 :(得分:0)

用单引号括起非数字值。

$query=mysql_query("select q_detail,q_id 
                      from question where category='$value2'");

答案 2 :(得分:0)

试试这个:

    $ans=1;

    if(isset($_POST))
    {
        echo $_POST['radio_' . $ans];
    }
    echo "<form method=\"post\" action=\"\">";
    $query=mysql_query("select q_detail,q_id from question where category=\"$value2\"",$connection);
    if(!$query)
    {
        echo mysql_error().'query failed';
    }

    while($value1=mysql_fetch_array($query))
    {
        echo "Q-$i"."&nbsp;&nbsp;";
        echo $value1['q_detail']."<br />";
        $i++;
        $qno=$value1['q_id'];
        $query1=mysql_query("select * from answer where ans_id=$qno");
        if(!$query1)
        {
            echo mysql_error().'query failed';
        }

        while($value2=mysql_fetch_array($query1))
        {
            $opt=$value2['option1'];
            $opt1=$value2['option2'];
            $opt2=$value2['option3'];
            $opt3=$value2['correct'];
            echo "<input type=\"radio\" value=\"$opt\" name=\"radio_$ans\">";
            echo "<span class=\"margin\">$opt</span>";
            echo "<input type=\"radio\" value=\"$opt1\" name=\"radio_$ans\">";
            echo $opt1."&nbsp;&nbsp;";
            echo "<input type=\"radio\" value=\"$opt2\" name=\"radio_$ans\">";
            echo $opt2."&nbsp;&nbsp;";
            echo "<input type=\"radio\" value=\"$opt3\" name=\"radio_$ans\">";
            echo $opt3."&nbsp;&nbsp;<br /><br />";
            $ans++;             
        }

    }
    echo"<input type=\"submit\" name=\"submit\" value=\"submit\">";
    echo "</form>";

我添加了if(isset($_POST)),在名称之前我添加了一些文本,因为名称作为整数,可以在PHP中用作整数索引。数组可以像

一样调用
$ar = array("Name" => "VALUE");
echo $ar[0]; // Outputs VALUE
echo $ar["Name"]; // Outputs VALUE

两者都输出“VALUE”。所以你要做的是什么。获取索引1的值而不是键1。

答案 3 :(得分:0)

你必须使用$ _POST ['实际的radiobutton名称'],i。即无论$ ans的内容是在回声的时候。

答案 4 :(得分:0)

您也可以在使用以下代码提交后调试表单:

echo "<pre>"; 
print_r($_POST); 
echo "</pre>";

这将显示$ _POST数据的内容,以便您可以查看是否正确传递了值。