Восстановить выбор радиокнопок при повторном посещении страницы - PullRequest
0 голосов
/ 15 января 2012

У меня есть скрипт PHP, который позволяет пользователям вводить оценки, выбирая переключатель, который соответствует оценке учащихся. Это позволяет им просматривать выбранные оценки, прежде чем они могут быть окончательно представлены. Я также хочу, чтобы на странице была возможность вернуться на страницу выбора и запомнить переключатели, которые были выбраны, чтобы пользователю не приходилось устанавливать их все снова при возврате. Вот то, что я кодировал до сих пор, оно возвращает пользователя на страницу выбора, но не восстанавливает выбор переключателя.

<?php

session_start();

$script_name = $_SERVER["PHP_SELF"];

if(!isset($_SESSION["course"]) || !isset($_SESSION["course"])) {
    $_SESSION["course"] = $_POST["coursename"];
    $_SESSION["section"] = $_POST["section"];
}

if(($_SESSION["authenticated"] == true || isset($_POST["back"])) && !isset($_POST["continue"])) {

    $course = $_SESSION["course"];
    $section = $_SESSION["section"];
    $file_name = $course.$section.".txt";
    $_SESSION["filename"] = $file_name;

    // Open file containing student names.
    $fp = fopen($_SESSION["filename"], "r") or die("Could not open file");
    $students = array();
    $i = 0;

    echo "<h2>Grades Submission Form</h2>";
    echo "<h2>Course: $course, Section: $section</h2>";
    echo "<form action=\"$script_name\" method='post'>";
    echo "<table border='1'>";
    while (!feof($fp)) {
        $line = trim(fgets($fp));
        $students[$i++] = $line;

        echo "<tr><td>$line</td>";
        echo "<td><input type='radio' name=\"$line\" value='A'/>A</td>";
        echo "<td><input type='radio' name=\"$line\" value='B'/>B</td>";
        echo "<td><input type='radio' name=\"$line\" value='C'/>C</td>";
        echo "<td><input type='radio' name=\"$line\" value='D'/>D</td>";
        echo "<td><input type='radio' name=\"$line\" value='F'/>F</td>";
        echo "</tr>";
    }
    echo "</table><br>";
    echo "<input type='submit' name='continue'/>";
    echo "</form>";

} elseif($_SESSION["authenticated"] == true && isset($_POST["continue"]) && !isset($_POST["back"])) {

    unset($_POST["continue"]);
    $keys = array_keys($_POST);
    $values = array_values($_POST);

    echo "<h2>Grades to Submit</h2>";
    echo "<table border='1'>";
    echo "<tr><th>Name</th><th>Grade</th></tr>";
    for($i = 0; $i < count($keys); $i++) {
        echo "<tr><td>{$keys[$i]}</td><td>{$values[$i]}</td></tr>";
    }
    echo "</table><br>";

    echo "<form action='confirmation.php' method='post'>";
    echo "<input type='submit' value='Submit Grades'/>";
    echo "</form>";

    echo "<form action=\"$script_name\" method='post'>";
    echo "<input type='submit' value='Back'/>";
    echo "</form>";

} else {
    header("Location: main.php");
}
?>

1 Ответ

1 голос
/ 15 января 2012

Вы можете serialize () массив, содержащий состояния переключателей и сохранить его в своем сеансе. Когда вы вернетесь назад, все, что вам нужно сделать, это отменить его сериализацию и заново установить данные.

...