Piszę właśnie stronę na której będzie można przeprowadzać testy i stanąłem w jednym miejscu, mianowicie na rozwiązanie każdego testu jest określona ilość czasu i nie było by tu dużego problemu gdyby nie fakt iż pytania są wyświetlane pojedynczo (stronicowanie) i po każdej udzielonej odpowiedzi skrypt jest przekierowywany do innego pliku gdzie następuje zapis udzielonej odpowiedzi do bazy MySql oraz inkrementacja zmiennych stronicowania i na końcu przekierowanie z powrotem. Mój problem polega na tym, że początkowo użyłem JS do odliczania czasu i przekierowania na stronę z wynikiem gdy on upłynie ale po wprowadzeniu opisanego powyżej rozwiązania to się nie sprawdza bo JS po każdym odświeżeniu strony zaczyna odliczanie od początku. Myślałem nad zapisem aktualnego czasu do zmiennej w sesji przed przekierowanie a potem ponowne jej odczytanie tyle, że nie wiem jak to można zrobić :/ Czy ktoś mi podsunie rozwiązanie tego problemu, a może ktoś ma lepszy pomysł

Poniżej przedstawiam kod źródłowy wspomnianych wcześniej plików.
Plik wyświetlający test:
<?php @$db = new mysqli ($db_host, $db_user, $db_pass, $db_name); $zap_test = $db->query("SELECT * FROM testy WHERE id_test=".$id_test); $rek_test = $zap_test->fetch_assoc(); { if ($i<2) {$godz = $godz.$rek_test['czas'][$i];} if (($i>2) && ($i<5)) {$min = $min.$rek_test['czas'][$i];} if ($i>5) {$sek = $sek.$rek_test['czas'][$i];} } if (($godz == 0) && ($min == 0) && ($sek == 0)) else { } { $page = (int) $_REQUEST['page']; if ($page < 1) { $page = 1; } } else { $page = 1; } $start = ($page - 1); $_SESSION['page'] = $page; $zap_ile_pyt = $db->query("SELECT * FROM pytania WHERE id_test=".$rek_test['id_test']); $result = $db->query("SELECT * FROM pytania WHERE id_test = ".$rek_test['id_test']." LIMIT $start, 1"); for ($i=1;$i<=$result->num_rows;$i++) { $rek_pyt = $result->fetch_assoc(); $zap_odp = $db->query("SELECT * FROM odpowiedzi WHERE id_test=".$rek_test['id_test']." AND id_pyt=".$rek_pyt['id_pytania']); for ($j=1; $j<=$zap_odp->num_rows; $j++) { $rek_odp = $zap_odp->fetch_assoc(); } } ?> <script type="text/javascript"> o=document.getElementById('sekundy') function odliczaj(o,sek) { o.innerHTML=sek if(sek>0)setTimeout(function(){odliczaj(o,--sek)},1e3) if(sek==0){window.location ="index.php?id=6";} } </script> </body> </html>
Plik dokonujący zapisu i inkrementacji:
<?php require_once ('common.php'); $id_test = $_SESSION['ide']; $nr_ucznia = $_SESSION['nr_ucznia']; $klasa = $_SESSION['klasa']; $id_pyt = $_POST['id_pyt']; date_default_timezone_set ("Europe/Warsaw"); @$db = new mysqli ($db_host, $db_user, $db_pass, $db_name); $zap_odp = $db->query("SELECT * FROM odpowiedzi WHERE id_test=".$id_test." AND id_pyt=".$id_pyt); for ($j=1; $j<=$zap_odp->num_rows; $j++) { $rek_odp = $zap_odp->fetch_assoc(); if ($_POST['checkodp'.$j] == on) { $zap_roz = $db->query("INSERT INTO roz VALUES (NULL,'".strtoupper($klasa)."',".$nr_ucznia.",".$id_test.",".$rek_odp['id_odp'].",".$data.",".$czas.",'".$ip."'".")"); } } //----------------START Zmiana strony w stronicowaniu--------------- $next = $_SESSION['next']; $next = $_SESSION['page'] + 1; $_SESSION['next'] = $next; $zap_ile_pyt = $db->query("SELECT id_pytania FROM pytania WHERE id_test=".$id_test); if ($next <= $zap_ile_pyt->num_rows) { } else { } //-------------STOP zmiana strony w stronicowaniu------------------- ?>