【问题标题】:Wrong/right counter for user input evaluation PHP用户输入评估PHP的错误/正确计数器
【发布时间】:2014-02-08 17:31:48
【问题描述】:

我构建了一个使用随机数和运算(+、-、*、/)的简单计算器。用户可以为每个问题填写表格,并评估他们的输入。但是,我不只是针对单个问题显示“那是对的”或“那是错误的”,而是想在更多问题(例如 50 个)上显示他们输入的准确性/失败。因此,我正在寻找一个数字计数器,它可能只包含一个简单的数字,每次用户给出正确答案时都会计数(可能是绿色),而第二个(红色)会在用户给出错误答案时计数回答。这两个数字都应不断显示。 50次后,会显示正确答案的百分比。

我可以通过会话来做到这一点吗?如果是这样,怎么办?现在,每次点击提交按钮时,页面都会刷新。因为我不是专家(还),所以你越具体越好。谢谢你的帮助!!请在下面找到我的代码:

<div style="text-align: center; font-weight: bold; font-size: x-large">


    <?php
    $number1 = rand(1,100);
    $number2 = rand(1,100);
    $number3 = rand(1,20);
    $number4 = rand(1,20);

    switch(rand(0,3)) {
        case 0:
            $solution = $number1 + $number2;
            echo "$number1+$number2=?";
            break;
        case 1:
            $solution = $number1 - $number2;
            echo "$number1-$number2=?";
            break;
        case 2:
            $solution = $number3 * $number4;
            echo "$number3*$number4=?";
            break;
        case 3:
            $solution = $number3 / $number4;
            echo "$number3/$number4=?";
            break;
    }
    ?>


<form action="form10.php" method="post">
Your Answer:<br>
<input type="integer" name="answer">
<input type="hidden" name="solution" value="<?php echo $solution; ?>">
<input type="Submit" value="Submit!">
</form>

<?php
if(isset($_POST['answer']) && isset($_POST['solution'])) {
    if ($_POST["answer"] == round($_POST['solution'],1)) {
        echo "<font color='#008000'> That's right! </font>";;
    } else {
      echo "That's wrong!";
    }
}
?>


</div> 

【问题讨论】:

    标签: php validation session input counter


    【解决方案1】:

    看起来你只需要一个 $counter 值来保持...

    <input type="hidden" name="counter" value="<?php echo $counter; ?>">
    

    然后递增...

    if( isset($_POST['counter']) )
       $counter= $_POST['counter'] + 1;
    

    示例 'test.php' = 继续点击提交按钮...

    <?php
    
    $counter=0;
    if( isset($_POST['counter']) )
       $counter= $_POST['counter'] + 1;
    
    ?>
    
    <form action="test.php" method="post">
    Your Answer:<br>
    <input type="integer" name="answer">
    <input type="hidden" name="counter" value="<?php echo $counter; ?>">
    <input type="Submit" value="Submit!">
    <br>
    Counter = <?php echo $counter; ?>
    </form>
    

    【讨论】:

    • 感谢您的建议!但是由于每次用户单击“提交”时都会重新加载页面,因此计数器仍然不计数。计数器保持为 1。
    • 另外,我在以这种方式在两个计数器中计数时遇到问题:一个计数器针对每个正确答案上升,另一个计数器针对每个错误答案上升。非常感谢您的支持!
    • 处理 POST 参数的 PHP 必须是 before 引用 $counter 变量的 javascript。
    • 添加了递增计数器的示例
    • 嘿,托尼!谢谢,完全有道理。最后一件事:这样,每次用户提交表单时它都会增加计数器。但是,我很想实现一个 IF 条件。如果用户输入正确答案,它应该增加计数器 1,如果用户输入任何错误答案,它应该增加计数器 2。这就是我正在努力解决的问题,如何根据输入验证增加计数器 - 目前发生在 html 表单之后(上面的代码)。很抱歉再次询问,非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多