Jeden quiz na stronę (program quizu php / mysql)

Obecnie pracuję nad programem quizu używającym PHP / mySQL (mój pierwszy raz w ogóle używałem).

Do tej pory pracowałem nad poprawnym funkcjonowaniem wszystkich tabel mySQL i robiłem to w quizie na jednej stronie. Jednak teraz chcę być w stanie umieścić tylko jedno pytanie na stronę, a następnie postępować, przesyłając jedną odpowiedź na raz.

Sposób, w jaki moje pytania są wybierane do quizu, może być nieco mylący. Wszystkie mają kolumnę „quiz_id”, która odpowiada quizowi, w którym się znajdują. Quiz ma kolumnę „długość”, która określa, ile pytań rzeczywiście ma. Tak więc może być więcej pytań z odpowiednim „quiz_id” niż w quizie. Sposób, w jaki losowo wybieram, które pytania zostaną uwzględnione, zawiera „$ question =" SELECT * FROM pytania WHERE quiz = '$ id' ORDER BY rand () LIMIT $ length ";".

Teraz mam wiele problemów z umieszczeniem tylko jednego pytania na stronie. Dzieje się tak dlatego, że za każdym razem, gdy robisz postępy, należy wybrać kolejne losowe pytanie, o ile nie osiągniemy limitu liczby pytań o długości $. Licznik również musi się zwiększyć, aby śledzić, na jakie pytanie numeryczne jesteś, z ilu ($ długości). Nie jestem pewien, czy muszę mieć dwa oddzielne skrypty akcji ... jeden, aby rozpocząć quiz, a następnie jeden, aby przejść między pytaniami.

Oto moja strona quiz.php (strona startowa każdego quizu):

<?php
// initialize the mysql data
$connect = mysql_connect('localhost', 'root', '');
$select_db = mysql_select_db('mysql');

// define the id and length from url
$id = mysql_real_escape_string($_GET['id']);
$length = mysql_real_escape_string($_GET['length']);

// query quiz table for all columns
$query_quiz = "SELECT * FROM quizzes WHERE id = '$id' LIMIT 1";

// if quiz query fails
if(!$query_quiz_result = mysql_query($query_quiz)) 
    { 
        die("Couldn't run quiz query"); 
    } 

// fetch whole array of quiz info
$quiz = mysql_fetch_array($query_quiz_result);



//query question table for all columns
$question = "SELECT * FROM questions WHERE quiz = '$id' ORDER BY  rand() LIMIT $length";
$q_result = mysql_query($question) or die ("couldn't run questions query");


// store queried questions as an array to pass via session variables
$q_array = array();
while($row = mysql_fetch_assoc($q_result))
{
    $q_array[] = $row;
}


session_start();
$_SESSION['quiz'] = $id;
$_SESSION['questions'] = $q_array;
$_SESSION['length'] = $length;
?>

<html>
  <head>
    <title>Quiz <?php echo mysql_real_escape_string($_GET['id']);?></title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div id="container" style="margin-left: 30px;">


<!-- create the header using the quiz id and name -->
<h1 style="text-align: center;">Quiz <?php echo $quiz['id'] ?>: <?php echo $quiz['name'] ?></h1>

<hr />

<h4>This quiz will have a total of <?php echo $length?> questions.</h4>

<button onClick="parent.location='start.php'">Begin Quiz</button>

    </div>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

A oto moja strona start.php .. nie jestem pewien, czy mogę użyć tej jednej strony do wszystkich pytań, czy też potrzebuję osobnej strony akcji po rozpoczęciu quizu i przechodzeniu do # 1?

<?php
// continue the session
session_start();

// initialize the mysql data
$connect = mysql_connect('localhost', 'root', '');
$select_db = mysql_select_db('mysql');


$quiz_id = $_SESSION['quiz'];
$length = $_SESSION['length'];
$_SESSION['questions_array'] = $_SESSION['questions'];
$current_question = array_shift($_SESSION['questions_array']);
$_SESSION['counter'] = 1;

$counter = $_SESSION['counter'];
?>

<html>
  <head>
    <title>Quiz <?php echo mysql_real_escape_string($_GET['id']);?></title>
    <link href="css/bootstrap.min.css" rel="stylesheet">
  </head>
  <body>
    <div id="container" style="margin-left: 30px;">

<h3>Question <?php echo $counter ?> of <?php echo $length ?></h3>

<hr />

<h4><?php echo $current_question['prompt']?></h4>

<?php
// define query for answers for each question
    $answers = 'SELECT `prompt` FROM `answers` WHERE `quiz` = '.$quiz_id.' AND `question` = '.$current_question['id'].'';

    //if failed
    if(!$answers_result = mysql_query($answers)){
        die("Couldn't run answers query");
    }
    ?>

        <p style="margin-left: 50px;">
        <?php

    // if question type is "multiple choice", loop through answer choices and print them as options
    if ($current_question['if_short_answer'] == 0) {
        // loop through rows of answer choices
        while($a_row = mysql_fetch_array($answers_result))
        {
            // print each answer choice
            ?>
            <input type='radio' name='question_<?php echo $current_question['id']; ?>' value='<?php echo $a_row['prompt']?>'><?php echo $a_row['prompt']?>
            <br />

        <?php
        }
        echo "</p>";
    }

    // if question type is "short answer", create text box
    elseif ($current_question['if_short_answer'] == 1) {
        ?>
        <input type="text" name="question_<?php echo $current_question['id']; ?>" /><br />
    </p>

    <?php
    } ?>


<?php
if ($counter >= 1) { ?>
<button onClick="parent.location='next.php'">Next Question</button>
<?php
}

else { ?>
    <button onClick="parent.location='start.php'">Begin Quiz</button>
<?php
}
?>

    </div>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

Przepraszam, jeśli jest to bardzo mgliste lub długie pytanie. Właśnie straciłem się teraz i nie wiem, jak postępować. Zasadniczo pytam: jak mogę umieścić tylko jedno pytanie na stronie, przechodząc przez losowe pytania, aż osiągnięty zostanie limit długości $, a następnie przycisk „Prześlij quiz” na końcu prowadzi do strony wyników? Przez cały czas przycisk „następne pytanie” musi przechowywać dane użytkownika dotyczące bieżącego pytania.

Zasadniczo potrzebuję wskazówek podczas pisania skryptu, aby przejść od jednego pytania do drugiego.

Dzięki!

questionAnswers(2)

yourAnswerToTheQuestion