2014-02-25 49 views
0

最近我正在爲電子圖書館做項目,並要求用戶閱讀每本書的倒數計時器。倒計時Javascript

因此,例如在我的數據庫中,'用戶'有'100秒'的積分時間來閱讀這本書,只有當他們閱讀這本書時纔會減少時間。

因此,這裏是我的代碼:

<?php 
     require_once('DatabaseManager.php'); 
     $databaseManager = new DatabaseManager(); 
     $books = $databaseManager->getAllRows('books'); 
     while ($book = mysqli_fetch_assoc($books)) { 
      $_SESSION['timer1'] = $book['timer']; 
     } 
     ?> 
     <html> 
<head> 
<title>Countdown</title> 

    <script> 
    var clicked = false; 
    var sec = <?php echo $_SESSION['timer1'];?>; 

    function startClock() { 
     if (clicked === false) { 
      clock = setInterval("stopWatch()", 1000); 
      clicked = true; 
     } 
     else if (clicked === true) { 
     } 
    } 

    function stopWatch() { 
     sec--; 
     document.getElementById("timer").innerHTML = sec; 


    } 

    function updateValue() { 
     <?php 
     $time_update = $databaseManager->editRow('books', 'book_id', '1', 'timer', $_GET['REMAINING VALUE FROM COUNTDOWN STORED HERE']); 
     ?> 
    } 
    </script> 
</head> 
<body> 

    <input type="submit" id="start-clock" value="Start" name="submit" onClick="startClock()"/> 

    <div id="timer">0</div> 
    <input type="submit" id="stop-clock" value="Stop" name="submit" onClick="updateValue()"/> 
    </br> 

</body> 
</html> 

所以我想要做的是:當用戶有100秒的信用價值,他們只能讀它45秒55秒的剩餘價值將被存儲到數據庫自動。使用'updateValue()'

而另一件事是我已經嘗試使用按鈕onClick,它的工作,但我希望此代碼工作,只要用戶關閉瀏覽器。

謝謝您的提前。

+0

看看[這個](http://stackoverflow.com/questions/3888902/javascript-detect-browser-close-tab-close-browser)。它可能會幫助 – Rohan

回答

0

你可以做到以下幾點:

當用戶閱讀的書發送消息(AJAX)到你的服務器的每「N」秒。服務器在接收到該消息時會從該用戶讀書時間的剩餘時間減少「n」秒並將該時間發回。

如果接收到的值爲零或負數,收到剩餘時間值的網頁將重定向到另一頁。

通過這種方式,您將能夠跟蹤剩餘時間和最大'n'秒錯誤。

+0

謝謝,但我仍然無法想象如何做到這一點..我已經嘗試了很多東西,其中大部分似乎不適合我 – user2780977