Оценка не установлена ​​правильно? - PullRequest
0 голосов
/ 22 февраля 2020

Я почти завершил создание базового c приложения для викторины. Как новый программист, я знаю, что буду делать много ошибок, но я хочу учиться на них. Так что я получил несколько икоты, и последний из них заключается в том, что моя переменная оценки не установлена ​​правильно.

Я получаю ноль в основном за результат в конце викторины.

Я не знаю, что это за ошибки. Вот почему я буду очень благодарен за любую помощь или предложения. Большое спасибо.

Вот базовый c пробег моего кода:

Вопрос. 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>

Ответы [ 2 ]

2 голосов
/ 22 февраля 2020

Вы на самом деле не увеличиваете счет, измените:

$_SESSION['score']+1;

На это:

$_SESSION['score'] += 1;

Это сокращение для:

$_SESSION['score'] = $_SESSION['score'] + 1;
0 голосов
/ 22 февраля 2020

Это неправильно:

$_SESSION['score']+1 ;

Это вычисляет новый счет, но ничего с ним не делает. Он не обновляет переменную сеанса. Должно быть:

$_SESSION['score']++;

Оператор приращения ++ переназначает переменную со значением + 1.

В этой строке также есть опечатка:

if ($correct_choice = $selected_choice)

= для назначения, == для сравнения, поэтому должно быть

if ($correct_choice == $selected_choice)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...