Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Odświeżene strony po wykonaniu czynności
Forum PHP.pl > Forum > Przedszkole
vegeta
Witam.

Mam taki kod:

  1. <?php
  2. define('ROOT_PATH', 'top/secret');
  3. define('URL_PATH', 'http://top.sec/ret/blaa');
  4. require_once (ROOT_PATH . '/include/baza.php');
  5. require_once (ROOT_PATH . '/include/funkcje.php');
  6.  
  7. if ($_GET['opcja'] == NULL) {
  8. mysql_query("UPDATE `users` set `action_name`='biurko' WHERE `id`='".$id_twoje."'");
  9. echo 'Wybierz co chcesz zrobić:<br /><br /><br />
  10.  
  11. > <a href="'.URL_PATH .'/dom/pokoj/biurko-list">Przeczytaj list</a><br />
  12. > <a href="'.URL_PATH .'/dom/pokoj/biurko-wypracowanie">Napisz wypracowanie</a><br />
  13. > <a href="'.URL_PATH .'/dom/pokoj">Wstań z krzesła</a>';
  14. }
  15.  
  16. if ($_GET['opcja'] == 'list') {
  17. $zapytanie = 'SELECT `action_name`, `action_end` FROM `users` WHERE `id`="'.$id_twoje.'"';
  18. $wykonaj = mysql_fetch_array(mysql_query($zapytanie));
  19. if ($wykonaj['action_name'] == 'biurko-list' && $wykonaj['action_end'] < mktime()) {
  20. echo 'Drogi Panie '.$login_twoj.'.<br /><br /><br />
  21.  
  22. > <a href="'.URL_PATH .'/dom/pokoj/biurko">Odłóż list</a>';
  23. } else {
  24. if($wykonaj['action_name'] != 'biurko-list'){
  25. mysql_query("UPDATE `users` set `action_name`='biurko-list', `action_end`='".(mktime() + 10)."' WHERE `id`='".$id_twoje."'");
  26. }
  27.  
  28. $zapytanie2 = 'SELECT `action_end` FROM `users` WHERE `id`="'.$id_twoje.'"';
  29. $wykonaj2 = mysql_fetch_array(mysql_query($zapytanie2));?>
  30.  
  31.  
  32. <script type="text/javascript">
  33. function liczCzas(ile) {
  34. godzin = Math.floor(ile / 3600);
  35. minut = Math.floor((ile - godzin * 3600) / 60);
  36. sekund = ile - minut * 60 - godzin * 3600;
  37. if (godzin < 10){ godzin = "0"+ godzin; }
  38. if (minut < 10){ minut = "0" + minut; }
  39. if (sekund < 10){ sekund = "0" + sekund; }
  40. if (ile > 0) {
  41. ile--;
  42. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  43. setTimeout("liczCzas("+ile+")", 1000);
  44. } else {
  45. document.getElementById("zegar").innerHTML = "[zakończono] - odśwież stronę";
  46. setInterval("getData('../biurko.php?opcja=list', 'akcja')", 2000);
  47. }
  48. }
  49. </script>
  50.  
  51. <?php
  52. $pozostalo = $wykonaj2['action_end'] - mktime();
  53. echo 'Niestety musisz chwilę poczekać ;)<br /><br />Pozostało: <span id="zegar"></span> <script type="text/javascript">liczCzas('.$pozostalo.')</script>';
  54. }
  55. }
  56. ?>


Gdy odliczanie zostanie wykonane to po wykonaniu funkcji setInterval wyświetla mnie się ten sam tekst, który jest przy odliczaniu, ale bez czasu. Dlatego dałem czas poszczególnych odświeżeń, aby odświeżało się do 2 sekundy. Gdy jednak odświeża się kilka razy to i tak ten sam tekst jest. Gdy jednak odświeżę stronę ręcznie (F5) to już wyświetla mnie się tekst:

  1. Drogi Panie '.$login_twoj.'.<br /><br /><br />
  2.  
  3. > <a href="'.URL_PATH .'/dom/pokoj/biurko">Odłóż list</a>


Co zrobić, aby po pierwszym odświeżeniu wszystko było ok?

PS: Gdy to zrobię to usunę czas odświeżenia, żeby nie było tongue.gif O! A może znacie funkcję, która czeka określony czas i dopiero potem odświeża? Byłbym wdzięczny.

PS2: Co zrobić, aby w każdym pliku, który jest odświeżany w JS nie dawać definicji i require'ów, które są w headerze?
lukaskolista
Cytat
A może znacie funkcję, która czeka określony czas i dopiero potem odświeża? Byłbym wdzięczny.
setTimeout();
strateg
Ogólnie w kodzie widzę kilka błędów semantycznych, które nie mają prawa pozwolić na interpretację kodu PHP, ale mniejsza z tym. Nas interesuje kod JavaScript., czyli:

  1. <script type="text/javascript">
  2. function liczCzas(ile) {
  3. godzin = Math.floor(ile / 3600);
  4. minut = Math.floor((ile - godzin * 3600) / 60);
  5. sekund = ile - minut * 60 - godzin * 3600;
  6. if (godzin < 10){ godzin = "0"+ godzin; }
  7. if (minut < 10){ minut = "0" + minut; }
  8. if (sekund < 10){ sekund = "0" + sekund; }
  9. if (ile > 0) {
  10. ile--;
  11. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  12. setTimeout("liczCzas("+ile+")", 1000);
  13. } else {
  14. document.getElementById("zegar").innerHTML = "[zakończono] - odśwież stronę";
  15. setInterval("getData('../biurko.php?opcja=list', 'akcja')", 2000);
  16. }
  17. }


spróbuj zamienić na:

  1. <script type="text/javascript">
  2. function liczCzas(ile) {
  3. godzin = Math.floor(ile / 3600);
  4. minut = Math.floor((ile - godzin * 3600) / 60);
  5. sekund = ile - minut * 60 - godzin * 3600;
  6. if (godzin < 10){ godzin = "0"+ godzin; }
  7. if (minut < 10){ minut = "0" + minut; }
  8. if (sekund < 10){ sekund = "0" + sekund; }
  9. if (ile > 0) {
  10. ile--;
  11. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  12. setTimeout("liczCzas("+ile+")", 1000);
  13. } else {
  14. window.location = "../biurko.php?opcja=list";
  15. }
  16. }


jeśli chcesz, aby wyświetliło, ze czas został zakończony, a po 2 sekundach odświeżyło się daj:

  1. <script type="text/javascript">
  2. function odswiez(adres)
  3. {
  4. window.location = adres;
  5. }
  6.  
  7. function liczCzas(ile) {
  8. godzin = Math.floor(ile / 3600);
  9. minut = Math.floor((ile - godzin * 3600) / 60);
  10. sekund = ile - minut * 60 - godzin * 3600;
  11. if (godzin < 10){ godzin = "0"+ godzin; }
  12. if (minut < 10){ minut = "0" + minut; }
  13. if (sekund < 10){ sekund = "0" + sekund; }
  14. if (ile > 0) {
  15. ile--;
  16. document.getElementById("zegar").innerHTML = godzin + ':' + minut + ':' + sekund;
  17. setTimeout("liczCzas("+ile+")", 1000);
  18. } else {
  19. setTimeout("odswiez('../biurko.php?opcja=list')", 2000);
  20. }
  21. }


jakbyś miał jakies problemy, to pisz tak, jak zawsze, na deshan.pl
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.