【问题标题】:The score is not being set correctly?分数设置不正确?
【发布时间】:2020-06-06 09:54:20
【问题描述】:

我快要创建一个基本的测验应用程序了。作为一个新程序员,我知道我会犯很多错误,但我想从中学习。 所以我遇到了一些小问题,最近的一个问题是我的分数 变量设置不正确。

我主要是因为测验结束时的结果得分为零。

我不知道错误是什么。这就是为什么我会非常感谢任何帮助或建议。真的非常感谢。

这是我的代码的基本运行:

问题.php

<?php include "database.php"; 
?>
<?php session_start(); ?>

<?php
//Set question
$number = (int) $_GET['n'];


    /*
 * Get Total Questions
*/
 $query="SELECT * FROM questions" ;
 //Get Results
$results = mysqli_query ($conn,$query);
$total = mysqli_num_rows($results);



/*
* Get the Question
*/
$query = "SELECT * FROM questions
WHERE question_number = $number";

//Get result
$result = mysqli_query ($conn,$query);

$question = $result->fetch_assoc();


/*
* Get choices
*/
$query = "SELECT * FROM choices
WHERE question_number = $number";

//Get result
$choices = mysqli_query($conn,$query);


?>

 <?php echo $question ['text']; ?>
</p>
 <form method="post" action="process.php"
  <ul class="choices">

<?php while ($row = $choices->fetch_assoc()) : ?>
<li><input name="choice" type="radio" value="<?php echo $row ['id'];?> " /><?php echo $row ['text']; ?></li>
      <input type="submit" name="submit" value="Sumbit"/>
      <input type="hidden" name= "number" value="<?php echo $number; ?>" />



 </main>

    </body>
</html>

<?php endwhile; ?>

进程.php

<?php include "database.php"; 
?>
<?php session_start(); ?>
<?php
// check to see if score is set error_handler)
if(!isset($_SESSION['score'] )) {
    $_SESSION ['score'] = 0;
}   

if($_POST) {
    $number = $_POST['number'];
    $selected_choice = $_POST['choice'];
    $next = $number+1;


    /*
 * Get Total Questions
*/
 $query="SELECT * FROM questions" ;
 //Get Results
$results = mysqli_query ($conn,$query);
$total = mysqli_num_rows($results);



    /*
    *   Get correct choice
    */
    $query = "SELECT * FROM choices
 WHERE question_number = $number AND is_correct=1";

//Get result
$result = mysqli_query($conn,$query);

//Get Row
$row = $result->fetch_assoc(); 

//Set Correct choice
$correct_choice = $row['id'];


//Compare choice
if ($correct_choice = $selected_choice) {
    //The answer is correct
    $_SESSION['score']+1 ;
}

//Check if it is the last question
if($number == $total){
    header("Location: final.php") ;
    exit();
    }  
    else { 
      header("Location: question.php?n=".$next);

    }

<p>Final score: <?php echo $_SESSION ['score']; ?> <p>

【问题讨论】:

  • 会话开始应该在您的页面顶部,然后是其他任何内容。然后包含您的文件
  • 非常感谢您的帮助。然而不幸的是它仍然无法正常工作
  • ?&gt; &lt;?php 可以删除;您正在关闭 PHP,然后是空格,然后重新打开它
  • 很公平,谢谢你,我会这样做的。但不幸的是,看起来这个分数问题需要更长的时间才能解决。

标签: php mysql web server


【解决方案1】:

你实际上并没有增加分数,改变:

$_SESSION['score']+1;

到这里:

$_SESSION['score'] += 1;

这是以下的简写:

$_SESSION['score'] = $_SESSION['score'] + 1;

【讨论】:

  • 非常感谢您的帮助。但不幸的是,它仍然无法正常工作。
【解决方案2】:

这是错误的:

$_SESSION['score']+1 ;

这会计算新的分数,但不会对它做任何事情。它不会更新会话变量。应该是:

$_SESSION['score']++;

++ 递增运算符将变量重新赋值为 + 1。

你在这一行也有一个错字:

if ($correct_choice = $selected_choice)

=是赋值,==是比较,所以应该是

if ($correct_choice == $selected_choice)

【讨论】:

  • 非常感谢您的帮助。然而不幸的是它仍然无法正常工作
  • 检查您的日志中是否有“标头已发送”警告。如果您看到它们,请查看stackoverflow.com/questions/8028957/… 并解决问题。
  • 我认为我没有收到该警告,但我会检查一下,谢谢
  • 是否首先设置了会话变量?我想不出增加它不起作用的原因。
  • 您确定if 条件成功吗?
猜你喜欢
  • 2020-10-14
  • 2011-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多