PHP如何以绿色打印选定答案

PHP如何以绿色打印选定答案,php,forms,loops,echo,radio,Php,Forms,Loops,Echo,Radio,这类似于我之前提出的关于将所选单选按钮与输入字段中的值匹配的问题 该代码允许用户通过输入一个问题和4个可能的答案来构建测验。您必须选择其中一个答案作为正确答案,并且在单独的PHP页面上,答案必须以绿色显示正确答案。最初这个问题已经解决了,但是在我修改代码进行验证之后,原来的显示循环就不起作用了 以下是代码的输出: 我需要奥尔巴尼打印绿色,因为这是正确的答案,是用单选按钮选择的 以下是我的表单代码: <?php session_start(); // Define vari

这类似于我之前提出的关于将所选单选按钮与输入字段中的值匹配的问题


该代码允许用户通过输入一个问题和4个可能的答案来构建测验。您必须选择其中一个答案作为正确答案,并且在单独的PHP页面上,答案必须以绿色显示正确答案。最初这个问题已经解决了,但是在我修改代码进行验证之后,原来的显示循环就不起作用了

以下是代码的输出:

我需要奥尔巴尼打印绿色,因为这是正确的答案,是用单选按钮选择的

以下是我的表单代码:

<?php
    session_start();

    // Define variables and set to empty values
    $questionErr = $answer0Err = $answer1Err = $answer2Err = $answer3Err = "";
    $question = $answer0 = $answer1 = $answer2 = $answer3 = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $valid = True;

        if (empty($_POST['question'])) {
            $questionErr = "Please supply a question";
            $valid = False;
        } else {
            $question = test_input($_POST['question']);
            $_SESSION['question'] = $_POST['question'];
        }

        if (empty($_POST['answer0'])) {
            $answer0Err = "Please supply a possible answer";
            $valid = False;
        } else {
            $answer0 = test_input($_POST['answer0']);
            $_SESSION['answer0'] = $_POST['answer0'];
        }

        if (empty($_POST['answer1'])) {
            $answer1Err = "Please supply a possible answer";
            $valid = False;
        } else {
            $answer1 = test_input($_POST['answer1']);
            $_SESSION['answer1'] = $_POST['answer1'];
        }

        if (empty($_POST['answer2'])) {
            $answer2Err = "Please supply a possible answer";
            $valid = False;
        } else {
            $answer2 = test_input($_POST['answer2']);
            $_SESSION['answer2'] = $_POST['answer2'];
        }

        if (empty($_POST['answer3'])) {
            $answer3Err = "Please supply a possible answer";
            $valid = False;
        } else {
            $answer3 = test_input($_POST['answer3']);
            $_SESSION['answer3'] = $_POST['answer3'];
        }
    }

    // Function to sanitize data
    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
        $data = htmlspecialchars($data);
        return $data;
    }

    // If valid, send to QuestionReview.php to display answers
    if ($valid) {
        $_SESSION['radio'] = $_POST['radio'];
        header('location: QuestionReview.php');
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>User-Created Quiz</title>
        <style>
            .shadow {
                 -webkit-box-shadow: 3px 3px 5px 6px #ccc;  /* Safari 3-4, iOS 4.0.2 - 4.2, Android 2.3+ */
                 -moz-box-shadow:    3px 3px 5px 6px #ccc;  /* Firefox 3.5 - 3.6 */
                 box-shadow:         3px 3px 5px 6px #ccc;  /* Opera 10.5, IE 9, Firefox 4+, Chrome 6+, iOS 5 */
            }
            .instructions {
                color: #696D6E;
            }
            #form-background {
                background-color: #ECEDE8;
            }
            .error {
                color: red;
            }   
        </style>
    </head>
    <body>
        <div style="width:600px">

        <fieldset id="form-background" class="shadow">
            <h1 class="instructions" style="text-align:center">User-Created Quiz</h1>
            <p class="instructions" style="text-align:center">
            <strong>Please enter a question of your own, 
                    along with 4 possible answers in the 
                    form below. Be sure to select the 
                    correct answer to your question
                    before submitting the form.</strong>
            </p>
            <form style="text-align:center;" method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

                <br>
                <label class="instructions" for="question" >Enter your question here</label><br>
                <input type="text" name="question" size="50" value='<?php echo $question;?>' />
                <span class="error">* <br /><?php echo $questionErr; ?></span>
                <br><br>
                <p class="instructions">
                    Please provide four answers to your question and select the 
                    correct one.
                </p>
                    <input type="radio" name="radio" value="answer0">
                    <input type="text" name="answer0" value="<?php echo $answer0; ?>" style="width:400px">
                    <span class="error">* <br /><?php echo $answer0Err; ?></span>
                    <br><br>

                    <input type="radio" name="radio" value="answer1">
                    <input type="text" name="answer1" value="<?php echo $answer1; ?>" style="width:400px">
                    <span class="error">* <br /><?php echo $answer1Err; ?></span>
                    <br><br>

                    <input type="radio" name="radio" value="answer2">
                    <input type="text" name="answer2" value="<?php echo $answer2; ?>" style="width:400px">
                    <span class="error">* <br /><?php echo $answer2Err; ?></span>
                    <br><br>

                    <input type="radio" name="radio" value="answer3">
                    <input type="text" name="answer3" value="<?php echo $answer3; ?>" style="width:400px">
                    <span class="error">* <br /><?php echo $answer3Err; ?></span>
                    <br><br>

                    <input type="submit" value="Submit Entry">
            </form>
        </fieldset>
        </div>

    </body>
</html>
这是我的结果页面代码:

<?php
    session_start();

    // Pull all variables from SESSION
    $question =  $_SESSION['question'];
    $answer0 = $_SESSION['answer0'];
    $answer1 = $_SESSION['answer1'];
    $answer2 = $_SESSION['answer2'];
    $answer3 = $_SESSION['answer3'];
    $radio = $_SESSION['radio'];

    $answerArray = array($answer0, $answer1, $answer2, $answer3);
    shuffle($answerArray);
?>


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>Entry Review</title>
        <style>
            .instructions {
                color: #696D6E;
            }
        </style>
    </head>
    <body>
        <h1 class="instructions">Entry Review</h1>
        <p><em>You entered the following question:</em></p>
        <p><strong><?php echo $question; ?></strong></p><br>



        <p><em>These are the answers you provided:</em>
        <p>
            <strong>
                <?php 

                if(isset($_SESSION['radio'])) {
                    $radio =  $_SESSION['radio'];
                    foreach ($answerArray as $value) {
                        echo $value . "<br />";
                    }
                } else {
                    echo "Please click the back button in your browser and select a correct answer";
                }
                ?>
            </strong>
        </p>
    </body>
</html>

拿一点A4普通纸,离开电脑工作十分钟

现在,确定您试图在块中实现的目标,您希望技能集/语言/运算符语法PHP、javascript、CSS、HTML等的每一部分做什么

您的项目中已经显示了一个输出列表,您希望将所选输出标记为与其他输出不同的输出

从最终的结果向后看,是什么导致了这种变化?没错,CSS,所以你可以写在你的论文上,你需要一个CSS类或其他标识符来选择输出,你可以调用它来得到答案

那么CSS如何知道选择哪个输出呢?这些数据保存在哪里

这些数据似乎在PHP中的某个地方,但从您的代码中并不是很明显。因此,您需要一个PHP IF语句来检查显示给浏览器的答案是否是用户选择的答案,然后该答案需要以某种方式封装在CSS类中,或者在外观上影响数据引用

就这样。你现在应该有足够的结构,在A4纸上写下笔记,然后用这些笔记将你的各种问题分解成组成部分。这里有部分用于定义应该发生的行为,然后是部分用于实现该行为


在5-10分钟内重写你的代码,你会得到你想要的东西。

拿一点A4纸,离开你的电脑工作10分钟

现在,确定您试图在块中实现的目标,您希望技能集/语言/运算符语法PHP、javascript、CSS、HTML等的每一部分做什么

您的项目中已经显示了一个输出列表,您希望将所选输出标记为与其他输出不同的输出

从最终的结果向后看,是什么导致了这种变化?没错,CSS,所以你可以写在你的论文上,你需要一个CSS类或其他标识符来选择输出,你可以调用它来得到答案

那么CSS如何知道选择哪个输出呢?这些数据保存在哪里

这些数据似乎在PHP中的某个地方,但从您的代码中并不是很明显。因此,您需要一个PHP IF语句来检查显示给浏览器的答案是否是用户选择的答案,然后该答案需要以某种方式封装在CSS类中,或者在外观上影响数据引用

就这样。你现在应该有足够的结构,在A4纸上写下笔记,然后用这些笔记将你的各种问题分解成组成部分。这里有部分用于定义应该发生的行为,然后是部分用于实现该行为


在5-10分钟内重写你的代码,你会得到你想要的东西。

你就快到了。。。简单一点:

如果您有:

$question =  $_SESSION['question'];
$radio = $_SESSION['radio'];
$answerArray = [$_SESSION['answer0'], $_SESSION['answer1'], $_SESSION['answer2'], $_SESSION['answer3']];
然后你可以:

if(isset($_SESSION['radio'])) {
  foreach ($answerArray as $value) {
    echo $_SESSION['radio'] == $value ? "<span style=\"color:green\">Make $value green.</span><br />" : "<span style=\"color:#666\">Make $value grey or red.</span><br />";
  }
} else {
  echo "Please click the back button in your browser and select a correct answer";
}
等于:

if(isset($_SESSION['radio'])) {
  foreach ($answerArray as $value) {
    if ($_SESSION['radio'] == $value){
      echo "<span style=\"color:green\">Make $value green.</span><br />";
    } else {
      echo "<span style=\"color:#666\">Make $value grey or red.</span><br />";
    }
  }
} else {
  echo "Please click the back button in your browser and select a correct answer";
}

你就快到了。。。简单一点:

如果您有:

$question =  $_SESSION['question'];
$radio = $_SESSION['radio'];
$answerArray = [$_SESSION['answer0'], $_SESSION['answer1'], $_SESSION['answer2'], $_SESSION['answer3']];
然后你可以:

if(isset($_SESSION['radio'])) {
  foreach ($answerArray as $value) {
    echo $_SESSION['radio'] == $value ? "<span style=\"color:green\">Make $value green.</span><br />" : "<span style=\"color:#666\">Make $value grey or red.</span><br />";
  }
} else {
  echo "Please click the back button in your browser and select a correct answer";
}
等于:

if(isset($_SESSION['radio'])) {
  foreach ($answerArray as $value) {
    if ($_SESSION['radio'] == $value){
      echo "<span style=\"color:green\">Make $value green.</span><br />";
    } else {
      echo "<span style=\"color:#666\">Make $value grey or red.</span><br />";
    }
  }
} else {
  echo "Please click the back button in your browser and select a correct answer";
}
在QuestionReview.php页面上,获得如下正确答案

$correct_answer = $_SESSION[$_SESSION['radio']];
因此,请保持您的测验页面不变,提交后,按如下方式处理您的表格:

QuestionReview.php:

在foreach循环的每次迭代中,检查当前选项是否等于正确答案。如果是,则将类说明应用于当前选项

输出:截图

在QuestionReview.php页面上,获得如下正确答案

$correct_answer = $_SESSION[$_SESSION['radio']];
因此,请保持您的测验页面不变,提交后,按如下方式处理您的表格:

QuestionReview.php:

在foreach循环的每次迭代中,检查当前选项是否等于正确答案。如果是,则将类说明应用于当前选项

输出:截图


原来这个问题已经解决了,但在我修改后…-那么,原始内容是什么,您删除了哪些基本代码?如果您可以复制/粘贴,为什么不介意做一个循环?这是我最初的问题:最初这个问题已经解决了,但在我修改之后…-原来的内容是什么?你删除了哪些基本代码?为什么
你介意做一个循环,如果你能复制/粘贴周围吗?这是我最初的问题:谢谢你的建议。我意识到有时候从工作中退一步是很重要的,以便思考我真正想做什么。这对任何解决问题的人来说都是一个很好的建议。@MichalPatriak很高兴你把问题解决了,而且讽刺的是,一些最好的计算机编程实际上是用笔和纸来规划和设置的-谢谢你的建议。我意识到有时候从工作中退一步是很重要的,以便思考我真正想做什么。这对任何解决问题的人来说都是一个很好的建议。@MichalPatriak很高兴你把问题解决了,而且讽刺的是,一些最好的计算机编程实际上是用笔和纸来规划和设置的-