2016-01-17 55 views
-2

我试图为用户创建一个分数结果,这取决于用户通过页面的速度。这是一个有点问题的HTML游戏,只有5页。在第1页上设置时间需要什么功能,然后在第5页上设置结束时间减去第1页上的时间。它应该给用户分数。在PHP页面之间传递的秒数

另外一个sidequestion,我创建了一个用户注册表单在PHP中发送玩游戏的用户ID到数据库。当我知道如何计算这两页之间的秒数时,我想知道如何将该分数印到每个用户身上,并将他们放入最终的高分页面。但那会晚一些。

如果任何人都可以帮助我解决任何一个问题或两个问题,我将非常感激。 预先感谢您。

+0

使用'时间()'函数,它保存在你的会话,当你想建立的区别时间跨度已过。 – arkascha

+0

我是PHP新手,你能告诉我如何去编写代码吗?我想这只是第1页和高分页(这是第5页减1页)的两段代码吧? – JohnMichael

+2

对不起,但您需要自己编写代码。该文档提供了您需要的所有信息。 _读它。它甚至带来的例子:http://php.net/manual/en/function.time.php http://php.net/manual/en/features.sessions.php – arkascha

回答

0

使用会话跟踪的第一页开始和第5页的结束之间经过的时间。以下是第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'); 
} 
+0

非常感谢您的帮助和努力,但第二大代码应该是在result.php不起作用。一条错误消息总是说“(!)解析错误:语法错误,意外'。'第23行C:\ wamp \ www \ game \ highscore.php“? – JohnMichael

+0

因为在第23行的那个文件中间有一个......代替......你需要指定你的mysql连接参数。下面几行的实际查询同样如此。查看更新后的答案。 –

+0

谢谢,威廉。我花了一段时间才能将代码正确实施到测验中,并且现在可以使用。您提供的时间戳完美无缺。而且我没有再提到我所提到的错误,但到目前为止,特定的代码似乎并没有做任何事情。我得到“无法将数据插入数据库”。我仍然会看,但谢谢! – JohnMichael

0

“我想知道如何将每个用户的分数贴到最终的高分页上,但这可能会晚一些。”
- 事实上,在开始编写代码之前,你可能会停下一会儿,然后想想你的网站需要做些什么。好的开始会想到你的系统将使用的实体以及它们的属性(用户,测验,问题,答案等)

截至时间,您可以存储用户开始在数据库中进行测验时的时间戳,可能是一个“测验尝试”表/实体:

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