私のe-examのカウントダウンタイマーが機能しなくなったので、実際に何が起こったのか理解できなかった。ゼロを読み(hh:分:秒)、質問に答えることなく学生の質問を自動的に提出し、それによって学生(学生)を0%に格付けします。おかげで...タイマーは学生が試験を試みることを許可せずに質問を提出することによってすぐに開閉する。
function countDown()
{
sec--;
if (sec == -01) {
sec = 59;
min = min - 1;
if(min==-01)
{
min=59;
hour=hour-1;
}else
{
hour=hour;
}
} else {
min = min;
}
if (sec<=9) { sec = "0" + sec; }
time = (hour<=9 ? "0" + hour : hour) + " : " + (min<=9 ? "0" + min : min) + " : " + sec + "";
if (document.getElementById) { document.getElementById('timer').innerHTML = time; }
SD=window.setTimeout("countDown();", 1000);
if (hour=='00'&& min == '00' && sec == '00') { sec = "00";min="00"; window.clearTimeout(SD); window.location=document.forms[0].action+"?fs=yes";}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
countDown();
});
スクリプトのPHPのセクションでは、このです:
<?php
error_reporting(0);
session_start();
include_once 'oesdb.php';
$final=false;
if(!isset($_SESSION['stdname'])) {
$_GLOBALS['message']="Session Timeout.Click here to <a href=\"index.php\">Re-LogIn</a>";
}
else if(isset($_REQUEST['logout']))
{
//Log out and redirect login page
unset($_SESSION['stdname']);
header('Location: index.php');
}
else if(isset($_REQUEST['dashboard'])){
//redirect to dashboard
//
header('Location: stdwelcome.php');
}else if(isset($_REQUEST['next']) || isset($_REQUEST['summary']) || isset($_REQUEST['viewsummary']))
{
//next question
$answer='unanswered';
if(time()<strtotime($_SESSION['endtime']))
{
if(isset($_REQUEST['markreview']))
{
$answer='review';
}
else if(isset($_REQUEST['answer']))
{
$answer='answered';
}
else
{
$answer='unanswered';
}
if(strcmp($answer,"unanswered")!=0)
{
if(strcmp($answer,"answered")==0)
{
$query="update studentquestion set answered='answered',stdanswer='".htmlspecialchars($_REQUEST['answer'],ENT_QUOTES)."' where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";";
}
else
{
$query="update studentquestion set answered='review',stdanswer='".htmlspecialchars($_REQUEST['answer'],ENT_QUOTES)."' where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";";
}
if(!executeQuery($query))
{
// to do
$_GLOBALS['message']="Your previous answer is not updated.Please answer once again";
}
closedb();
}
if(isset($_REQUEST['viewsummary']))
{
header('Location: summary.php');
}
if(isset($_REQUEST['summary']))
{
//summary page
header('Location: summary.php');
}
}
if((int)$_SESSION['qn']<(int)$_SESSION['tqn'])
{
$_SESSION['qn']=$_SESSION['qn']+1;
}
if((int)$_SESSION['qn']==(int)$_SESSION['tqn'])
{
$final=true;
}
}
else if(isset($_REQUEST['previous']))
{
// Perform the changes for current question
$answer='unanswered';
if(time()<strtotime($_SESSION['endtime']))
{
if(isset($_REQUEST['markreview']))
{
$answer='review';
}
else if(isset($_REQUEST['answer']))
{
$answer='answered';
}
else
{
$answer='unanswered';
}
if(strcmp($answer,"unanswered")!=0)
{
if(strcmp($answer,"answered")==0)
{
$query="update studentquestion set answered='answered',stdanswer='".htmlspecialchars($_REQUEST['answer'],ENT_QUOTES)."' where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";";
}
else
{
$query="update studentquestion set answered='review',stdanswer='".htmlspecialchars($_REQUEST['answer'],ENT_QUOTES)."' where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";";
}
if(!executeQuery($query))
{
// to do
$_GLOBALS['message']="Your previous answer is not updated.Please answer once again";
}
closedb();
}
}
//previous question
if((int)$_SESSION['qn']>1)
{
$_SESSION['qn']=$_SESSION['qn']-1;
}
}
else if(isset($_REQUEST['fs']))
{
//Final Submission
header('Location: testack.php');
}
?>
<?php
header("Cache-Control: no-cache, must-revalidate");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Examination Platform
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE"/>
<meta http-equiv="PRAGMA" content="NO-CACHE"/>
<meta name="ROBOTS" content="NONE"/>
<link rel="stylesheet" type="text/css" href="oes.css"/>
<script type="text/javascript" src="validate.js" ></script>
<script type="text/javascript" src="cdtimer.js" ></script>
<script type="text/javascript" >
<!--
<?php
$elapsed=time()-strtotime($_SESSION['starttime']);
if(((int)$elapsed/60)<(int)$_SESSION['duration'])
{
$result=executeQuery("select TIME_FORMAT(TIMEDIFF(endtime,CURRENT_TIMESTAMP),'%H') as hour,TIME_FORMAT(TIMEDIFF(endtime,CURRENT_TIMESTAMP),'%i') as min,TIME_FORMAT(TIMEDIFF(endtime,CURRENT_TIMESTAMP),'%s') as sec from studenttest where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid'].";");
if($rslt=mysql_fetch_array($result))
{
echo "var hour=".$rslt['hour'].";";
echo "var min=".$rslt['min'].";";
echo "var sec=".$rslt['sec'].";";
}
else
{
$_GLOBALS['message']="Try Again";
}
closedb();
}
else
{
echo "var sec=01;var min=00;var hour=00;";
}
?>
-->
</script>
</head>
<body >
<noscript><h2>For the proper Functionality, You must use Javascript enabled Browser</h2></noscript>
<?php
if($_GLOBALS['message']) {
echo "<div class=\"message\">".$_GLOBALS['message']."</div>";
}
?>
<div id="container">
<div class="header">
<img style="margin:10px 2px 2px 10px;float:left;" height="80" width="200" src="images/logo.gif" alt=""/><h3 class="headtext"> eExamination </h3><h4 style="color:#ffffff;text-align:center;margin:0 0 5px 5px;"><i>Idea | Innovation | Motivation</i></h4>
</div>
<form id="testconducter" action="testconducter.php" method="post">
<div class="menubar" style="text-align:center;">
<h2 style="font-family:helvetica,sans-serif;font-weight:bolder;font-size:120%;color:#f50000;padding-top:0.3em;letter-spacing:1px;">Examination Platform</h2>
</div>
<div class="page">
<?php
if(isset($_SESSION['stdname']))
{
$result=executeQuery("select stdanswer,answered from studentquestion where stdid=".$_SESSION['stdid']." and testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";");
$r1=mysql_fetch_array($result);
$result=executeQuery("select * from question where testid=".$_SESSION['testid']." and qnid=".$_SESSION['qn'].";");
$r=mysql_fetch_array($result);
?>
<div class="tc">
<table border="0" width="100%" class="ntab">
<tr>
<th style="width:40%;"><h3><span id="timer" class="timerclass"></span></h3></th>
<th style="width:40%;"><h4 style="color: #af0a36;">Question No: 1 </h4></th>
<th style="width:20%;"><h4 style="color: #af0a36;"><input type="checkbox" name="markreview" value="mark"> Mark for Review</input></h4></th>
</tr>
</table>
<textarea cols="100" rows="8" name="question" readonly style="width:96.8%;text-align:left;margin-left:2%;margin-top:2px;font-size:120%;font-weight:bold;margin-bottom:0;color:#0000ff;padding:2px 2px 2px 2px;"><?php echo htmlspecialchars_decode($r['question'],ENT_QUOTES); ?></textarea>
<table border="0" width="100%" class="ntab">
<tr><td> </td></tr>
<tr><td >1. <input type="radio" name="answer" value="optiona" <?php if((strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"review")==0 ||strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"answered")==0)&& strcmp(htmlspecialchars_decode($r1['stdanswer'],ENT_QUOTES),"optiona")==0){echo "checked";} ?>> <?php echo htmlspecialchars_decode($r['optiona'],ENT_QUOTES); ?></input></td></tr>
<tr><td >2. <input type="radio" name="answer" value="optionb" <?php if((strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"review")==0 ||strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"answered")==0)&& strcmp(htmlspecialchars_decode($r1['stdanswer'],ENT_QUOTES),"optionb")==0){echo "checked";} ?>> <?php echo htmlspecialchars_decode($r['optionb'],ENT_QUOTES); ?></input></td></tr>
<tr><td >3. <input type="radio" name="answer" value="optionc" <?php if((strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"review")==0 ||strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"answered")==0)&& strcmp(htmlspecialchars_decode($r1['stdanswer'],ENT_QUOTES),"optionc")==0){echo "checked";} ?>> <?php echo htmlspecialchars_decode($r['optionc'],ENT_QUOTES); ?></input></td></tr>
<tr><td >4. <input type="radio" name="answer" value="optiond" <?php if((strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"review")==0 ||strcmp(htmlspecialchars_decode($r1['answered'],ENT_QUOTES),"answered")==0)&& strcmp(htmlspecialchars_decode($r1['stdanswer'],ENT_QUOTES),"optiond")==0){echo "checked";} ?>> <?php echo htmlspecialchars_decode($r['optiond'],ENT_QUOTES); ?></input></td></tr>
<tr><td> </td></tr>
<tr>
<th style="width:80%;"><h4><input type="submit" name="<?php if($final==true){ echo "viewsummary" ;}else{ echo "next";} ?>" value="<?php if($final==true){ echo "View Summary" ;}else{ echo "Next";} ?>" class="subbtn"/></h4></th>
<th style="width:12%;text-align:right;"><h4><input type="submit" name="previous" value="Previous" class="subbtn"/></h4></th>
<th style="width:8%;text-align:right;"><h4><input type="submit" name="summary" value="Summary" class="subbtn" /></h4></th>
</tr>
</table>
</div>
<?php
closedb();
}
?>
</div>
</form>
<div id="footer">
<p style="font-size:70%;color:#ffffff;"> </b><br/> </p><p></p>
</div>
</div>
</body>
</html>
変数が宣言された後、ありがたいことですが、まだ動作しません。 – user6458234
あなたはcountDown関数のデバッグを試して、あなたのsec、min、hour変数の値が何であるかを見てきましたか? –
はい、私はしましたが、それでもまだ動作していないか、またはパラパラのメインスクリプトをコピーしていますので、ソリューションがあれば見えますか? – user6458234