数据库
首页 > 数据库> > PHP-如何在数据库中保存用户测验响应?

PHP-如何在数据库中保存用户测验响应?

作者:互联网

moodle1.9如何在数据库中保存用户尝试测验结果以及用户尝试任何测验时更新哪些表?

请指导我.

如果可能的话,请更新我,哪些功能用于将用户测验尝试的数据插入moodle1.9数据库中?

解决方法:

从try.php文件(Moodle 1.9.7)中:

$attempt = quiz_create_attempt($quiz, $attemptnumber);

然后:

if (!$attempt->id = insert_record('quiz_attempts', $attempt)) {
            error('Could not create new attempt');
        }

从locallib.php:

/**
 * Creates an object to represent a new attempt at a quiz
 *
 * Creates an attempt object to represent an attempt at the quiz by the current
 * user starting at the current time. The ->id field is not set. The object is
 * NOT written to the database.
 * @return object                The newly created attempt object.
 * @param object $quiz           The quiz to create an attempt for.
 * @param integer $attemptnumber The sequence number for the attempt.
 */
function quiz_create_attempt($quiz, $attemptnumber) {
    global $USER, $CFG;

    if (!$attemptnumber > 1 or !$quiz->attemptonlast or !$attempt = get_record('quiz_attempts', 'quiz', $quiz->id, 'userid', $USER->id, 'attempt', $attemptnumber-1)) {
        // we are not building on last attempt so create a new attempt
        $attempt->quiz = $quiz->id;
        $attempt->userid = $USER->id;
        $attempt->preview = 0;
        if ($quiz->shufflequestions) {
            $attempt->layout = quiz_repaginate($quiz->questions, $quiz->questionsperpage, true);
        } else {
            $attempt->layout = $quiz->questions;
        }
    }

    $timenow = time();
    $attempt->attempt = $attemptnumber;
    $attempt->sumgrades = 0.0;
    $attempt->timestart = $timenow;
    $attempt->timefinish = 0;
    $attempt->timemodified = $timenow;
    $attempt->uniqueid = question_new_attempt_uniqueid();

    return $attempt;
}

请参考源代码以获取主要详细信息.

标签:moodle,php
来源: https://codeday.me/bug/20191106/2000832.html