wie stellen Sie den countdown-timer nicht zurücksetzen auf Seite aktualisieren
Ich bin die Schaffung einer online-Prüfung-Seite für mein Projekt. Ich habe einen countdown-timer, aber es setzt auf der Seite aktualisieren. Wie kann ich es nicht zurücksetzen?
Der timer ist gesetzt durch das Holen der Zeit aus der db. Ich bin mit php mysql. Bitte helfen Sie mir.
Hier ist mein code.
<?php
$result=mysql_query("select * from test where testid='29'");
while($time=mysql_fetch_array($result)){
$dateFormat = "d F Y -- g:i a";
$targetDate = time() + ($time['duration']*60);
$actualDate = time();
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$actualDateDisplay = date($dateFormat,$actualDate);
$targetDateDisplay = date($dateFormat,$targetDate);
}
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
seconds--;
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
hours = 23
}
document.getElementById("remain").innerHTML = " "+hours+" hr "+minutes+" min "+seconds+" sec";
SD=window.setTimeout( "setCountDown()", 1000 );
if (minutes == '00' && seconds == '00') {
seconds = "00"; window.clearTimeout(SD);
window.location = "result.php"
}
}
</script>
</head>
<body onLoad="setCountDown();">
<div id="remain">
<?php echo "$remainingHour hours, $remainingMinutes minutes, $remainingSeconds seconds";?>
</div>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie den Wert in die session-variable und danach:
session_start()
aus meinem code. Falls die session nicht immer gestartet, dann Sie hinzufügen können, wenn conditon um zu überprüfen, ob session gestartet wird. Etwa so: stackoverflow.com/a/18542272/1119550Wenn der Benutzer startet die Prüfung, speichern Sie die Startzeit in der Datenbank. Sie für alles. Verlassen Sie sich nicht auf client-Seite code für diese als der Benutzer kann leicht ändern Sie es.
Wenn Sie speichern Sie die start-Zeit, werden Sie wissen, wenn der Benutzer gestartet hat und was die aktuelle Zeit ist. Die Sie verwenden können, um zu sehen, ob Zeit ist oder nicht. Ein javascript-timer ist gut zu zeigen, wie viel Zeit übrig ist, aber es sollte immer die Infos aus der Datenbank.
Werden Sie wahrscheinlich benötigen, um registrieren Sie einen Tisch wie active_exams mit einem examId Feld und datetimeStarted. Laden Sie dann den timer als die Anzahl der Sekunden für diese Prüfung seit es gestartet wurde.
Können Sie erstellen einige workaround mit cookies, localStorage oder auch die session aber im Kopf behalten, werden diese geändert werden kann (oder zumindest getrost vergessen bei der Sitzung) durch den Nutzer.
Seite aktualisieren, egal, ob der Zeitgeber "start-Zeit" gespeichert in der Datenbank für bestimmte Benutzer.
Holen diese "start-Zeit" aus der Datenbank und berechnen Sie, um die verbrauchte Zeit und zeigen dementsprechend die Verbleibende oder verstrichene Zeit.