PHP,如果值为true,则else语句未执行代码

时间:2020-03-19 05:57:02

标签: php if-statement

这是一个测验应用程序。

这是我的比较,其中$ number是问题编号,并且每次用户提交答案时都会增加,并且由于类别只有3个问题,我们现在假设$ totalquestions = 3。

我已经回显了两个值以确保它们是我期望的值并完成了var_dump($ number == $ totalQuestions);当$ number = 3时返回true,但是一旦所有问题都解决了,我就不执行我的代码以重定向到完成页面。

因为我一直在盯着这个问题几个小时,所以任何帮助都会很棒!

<?php include('server.php'); ?>
<?php
    if(!isset($_SESSION['geoScore'])){
        $_SESSION['geoScore'] = 0;
    }

    //Get quiz category
    $activeCategoryID = (int) $_GET['c'];
    $query = "SELECT * FROM `category` WHERE CategoryID = $activeCategoryID";
    $result = mysqli_query($db, $query);
    $categoryName = mysqli_fetch_assoc($result);
    echo $categoryName['CategoryName'];

    //Get question number
    $number = (int) $_GET['n'];
    $query = "SELECT * FROM `questions` WHERE QuestionID = $number AND CategoryID = $activeCategoryID";
    $result = mysqli_query($db, $query);

    $question = mysqli_fetch_assoc($result);

    //Get choices for question
    $query = "SELECT * FROM `answers` WHERE QuestionID = $number";
    $choices = mysqli_query($db, $query);

    //Get total questions for category
    $query = "SELECT * FROM `questions` WHERE CategoryID = $activeCategoryID";
    $result = mysqli_query($db, $query);
    $totalQuestions = mysqli_num_rows($result);

        echo $totalQuestions;
        echo $number;

        var_dump($number == $totalQuestions); // returns true because values are equal

        $result = mysqli_query($db, $query);
        $row = mysqli_fetch_assoc($result);
        $correctChoice = $row['AnswerID'];

        echo $correctChoice;

if($_SERVER["REQUEST_METHOD"] == "POST"){
        $number = $_POST['number'];
        $selectedChoice = $_POST['choice'];
        $next = $number+1;
        $activeCategory = $_POST['activeCategoryID'];

        $query = "SELECT * FROM `questions` WHERE CategoryID = activeCategoryID";
        $result = mysqli_query($db, $query);
        $totalQuestions = mysqli_num_rows($result);

        //Get correct choice
        $query = "SELECT * FROM `answers` WHERE QuestionID = $number AND Correct = 1";

        $result = mysqli_query($db, $query);
        $row = mysqli_fetch_assoc($result);
        $correctChoice = $row['AnswerID'];

        if($correctChoice == $selectedChoice){
            $_SESSION['geoScore']++;
        }

        //Check to see if questions have finished
        if($number == $totalQuestions){
        header("Location: finish.php");
        }else{
        header("Location: geoQuiz.php?n=".$next."&c=".$activeCategory);
        }
    }
?>

编辑:以前的工作版本未动态获取测验类别

<?php
    if(!isset($_SESSION['geoScore'])){
        $_SESSION['geoScore'] = 0;
    }

    //Get question number
    $number = (int) $_GET['n'];
    $query = "SELECT * FROM `questions` WHERE QuestionID = $number AND CategoryID = 1";
    $result = mysqli_query($db, $query);

    $question = mysqli_fetch_assoc($result);

    //Get choices for question
    $query = "SELECT * FROM `answers` WHERE QuestionID = $number";
    $choices = mysqli_query($db, $query);

    //Get total questions for category
    $query = "SELECT * FROM `questions` WHERE CategoryID = 1";
    $result = mysqli_query($db, $query);
    $totalQuestions = mysqli_num_rows($result);

    if($_SERVER["REQUEST_METHOD"] == "POST"){
        $number = $_POST['number'];
        $selectedChoice = $_POST['choice'];
        $next = $number+1;
        $_SESSION['activeCategory'] = "Geography";


        $query = "SELECT * FROM `questions` WHERE CategoryID = 1";
        $result = mysqli_query($db, $query);
        $totalQuestions = mysqli_num_rows($result);

        //Get correct choice
        $query = "SELECT * FROM `answers` WHERE QuestionID = $number AND Correct = 1";

        $result = mysqli_query($db, $query);
        $row = mysqli_fetch_assoc($result);
        $correctChoice = $row['AnswerID'];

        echo $correctChoice;
        echo $selectedChoice;

        if($correctChoice == $selectedChoice){
            $_SESSION['geoScore']++;
        }


        echo $geoScore;

        //Check to see if questions have finished
        if($number == $totalQuestions){
        header("Location: finish.php");
        }else{
        header("Location: geoQuiz.php?n=".$next);
        }
    }

?>

上面的代码是我以前的版本,可以运行,但是我需要为每个测验类别拥有多个php页面,因此我尝试将其更改为在索引页面的链接中使用$ _GET []来获取类别。除了问题完成的时间之外,还可以完成所有工作。php

0 个答案:

没有答案