我正在使用 PHP 编写在线测验程序。每当测验的回答者选择正确答案时,代码将自动为其总分 +1。
为此,我使用 $_SESSION['score']=0;
首先将分数设置为零,然后使用 $_SESSION['score']++;
每当回答者得到每个问题的正确答案时。
但是,我不知道为什么尽管回答者正确回答了问题,但分数却没有加起来。
当回答者正确回答问题时,分数仍然是 0,不知为什么,我不知道为什么。我可以知道出了什么问题吗?谢谢。
我尝试过的事情:
1.将$_SESSION['score']++;
改为$_SESSION['score']+1;
2.改变:
if(!isset($_SESSION['score'])){
$_SESSION['分数']=0;
}
只是
$_SESSION['score']=0;
3.改变
if($correct_choice == $selected_choice){
$_SESSION['分数']++;
}
只是:
if($correct_choice = $selected_choice){
$_SESSION['分数']++;
}
下面是 process.php 的代码:
<?php include 'database.php'; ?>
<?php session_start(); ?>
<?php
if(!isset($_SESSION['score'])){
$_SESSION['score']=0;
}
if(isset($_POST['submit'])){
$number=$_POST['number'];
$selected_choice = $_POST['choice'];
$next=$number+1;
/*
* Get total questions
*/
$query="SELECT* FROM questions";
$results= mysqli_query($con,$query);
$total=$results->num_rows;
/*
* Get correct choice
*/
$query = "SELECT* FROM `choices` WHERE question_number = $number AND is_correct=1";
//Get result
$results= mysqli_query($con,$query);
//Get row
$row=$results->fetch_assoc();
//Set Correct choices
$correct_choice=$row['id'];
//Compare choice made with correct choice
if($correct_choice == $selected_choice){
$_SESSION['score']++;
}
//Check if last question
if($number == $total){
header("Location: final.php");
exit();
} else {
header("Location: question.php?n=".$next);
}
}
刚试过:
if($correct_choice == $selected_choice){
echo "same";
} else{
echo "not same";
}
即使 $correct_choice
和 $selected_choice
都等于 1,代码仍然返回“not same”?
最佳答案
您正在打开和关闭大量 PHP 标记 - 没有必要。如果您有错误报告并显示在屏幕上,它可能会说“标题已发送”。这可能是问题所在。
由于 process.php 文件都是 php - 只需打开 <?php
标记一次 - 最后甚至不必费心去关闭它 - 除非你明确地输出一些东西(这对于一个更大的程序来说是不好的做法,最好使用一个小框架和单独的模板)。
关于php - 尽管经过多次尝试和在线搜索,$SESSION 仍无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31231487/