在PHP中

时间:2016-01-17 10:38:33

标签: php database function

我尝试为用户创建分数结果,这取决于用户浏览网页的速度。它是html中的一个小问答游戏,只有5页。在第1页上设置时间,然后在第5页上设置结束时间减去第1页上的时间所需的功能是什么。它应该给用户分数。

同样是一个问题,我在php中创建了一个用户注册表单,用于将玩游戏的用户ID发送到数据库。当我知道如何计算两个页面之间的秒数时,我想知道如何将该分数标记到每个用户并将它们放在最终的高分页面中。但那可以晚点。

如果有人可以帮我解决其中任何一个或两个问题,我将非常感激。 提前谢谢。

2 个答案:

答案 0 :(得分:0)

"我想知道如何将该分数标记到每个用户并将其放在最终的高分页面中。但这可能会在以后发生。"
- 实际上,在开始编写代码之前,你可能会停一会儿,并想一想你的网站需要做些什么。好的开始是考虑你的系统将使用的实体及其属性(用户,测验,问题,答案等)

截止到时,您可以存储时间戳,当用户开始在数据库中进行测验时,可以进行"测验尝试"表/实体:

INSERT INTO quiz_attempt (..., time_started) VALUES (..., NOW() );

答案 1 :(得分:0)

使用会话来跟踪在page1的开始和page5的结尾之间经过的时间。以下是第1页开始和第5页之后的部分示例。

对于查询插入查询,请使用预准备语句。

php time()函数给出了自1970年1月1日以来的秒数,所以它应该足以使用结束时间 - 开始时间之间的差异。

page1.php中

<?php

if (session_status() == PHP_SESSION_NONE){
    session_start();
}
$startTime = time();
$_SESSION['start_time'] = $startTime;
?>
<html>
    <body>
        <h1>Page 1</h1>

        ...

    </body>
</html>

第5页(Result.php)之后

<?php
// get the current session if we have one, die with error if not (no start time present)
if (session_status() == PHP_SESSION_NONE){
    session_start();

    if(!isset($_SESSION['start_time'])){
        die('no start time!');
    }
}

$_SESSION['end_time'] = time();
$timeDiff = $_SESSION['end_time'] - $_SESSION['start_time'];
?>

<html>
    <h1>Total time</h1>
    <?php echo $timeDiff; ?>
</html>

<?php
// Database connection and query
// set connection parameters
$host = "localhost";
$user = "root";
$password = ""; 
$database "your database name";

$conn = mysqli_connect($host, $user, $password, $database);

if (mysqli_connect_errno()) {
    die('Could not connect to database');
}

$query = "insert into QUIZ_LOG (col1, col2, ..... time_to_complete) values (?, ?, ... ?)";
$pst = mysqli_prepare($conn, $query);

if ($pst) {
    // set query parameters
    // ...
    mysqli_stmt_bind_param($pst, "i", $timeDiff);

    mysqli_stmt_execute($pst);
} else {
    die('Could not insert data into db');
}