Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Odliczanie czasu.
Croos22
post 1.12.2010, 20:05:02
Post #1





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

Ostrzeżenie: (0%)
-----


Witam.

Interesuje mnie w jaki sposób mógłbym zrobić odliczanie w js które poprzez kliknięcie w wyznaczony obiekt,link rozpocznie odliczanie a po zakończeniu wykona jakiś tam kod php np. zapytanie do bazy?
Go to the top of the page
+Quote Post
modern-web
post 1.12.2010, 20:31:00
Post #2





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Możesz to zrobić na przykład tak:

  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  3. <title>Timer</title>
  4. <script type="text/javascript">
  5. var licznik = 0;
  6. var timerId = null;
  7. function btnStartClick()
  8. {
  9. if(timerId) return;
  10. var tf1 = document.getElementById('tf1');
  11. if(!tf1) return;
  12.  
  13. var arr = tf1.value.split(":", 2);
  14. var minuty = parseInt(arr[0]);
  15. var sekundy = parseInt(arr[1]);
  16.  
  17. if(isNaN(minuty) || isNaN(sekundy) || sekundy < 0 ||
  18. sekundy > 59 || minuty < 0 ){
  19. alert("Prawidłowym formatem jest MM:SS, np. 1:28.");
  20. return;
  21. }
  22.  
  23. licznik = minuty * 60 + sekundy;
  24.  
  25. tf1.disabled = true;
  26. if(licznik == 0) licz();
  27. else
  28. timerId = setInterval("licz();wyswietl();", 1000);
  29. }
  30. function btnStopClick()
  31. {
  32. if(!timerId) return;
  33. clearInterval(timerId);
  34. timerId = null;
  35.  
  36. var tf1 = document.getElementById('tf1');
  37. if(!tf1) return;
  38. tf1.disabled = false;
  39. }
  40. function wyswietl()
  41. {
  42. var sekundy = licznik % 60;
  43. var minuty = Math.floor(licznik / 60);
  44.  
  45. sekundy = sekundy < 10 ? "0" + sekundy : sekundy;
  46. minuty = minuty < 10 ? "0" + minuty : minuty;
  47.  
  48. var tf1 = document.getElementById('tf1');
  49. if(tf1) tf1.value = minuty + ":" + sekundy;
  50. }
  51. function licz()
  52. {
  53. if(--licznik <= 0){
  54. licznik = 0;
  55. wyswietl();
  56. clearInterval(timerId);
  57. timerId = null;
  58. alert("Upłynął zadany czas!");
  59. var tf1 = document.getElementById('tf1');
  60. if(!tf1) return;
  61. tf1.disabled = false;
  62. }
  63. }
  64. </script>
  65. </head>
  66. <div id="timerDiv">
  67. <input type="text" id="tf1" size="6" style="text-align:center;" />
  68. <input type="button" id="btnStart" value="Start"
  69. onclick="btnStartClick();" />
  70. <input type="button" id="btnStop" value="Stop"
  71. onclick="btnStopClick();" />
  72. </div>
  73. </body>
  74. </html>


Wystarczy, że dodasz do tego akcję po ukończeniu odliczania, usuniesz pola dodawania czasu do odliczenia (nic trudnego) i ustawisz domyślną wartość przy każdym kliknięciu danego elementu smile.gif
Co do akcji po zakończeniu podmień
  1. alert("Upłynął zadany czas!");
na zapytanie do bazy... oczywiście poczytaj wcześniej kilka kursów na temat implementacji kodu PHP w JavaScript.

Z resztą powinieneś sobie poradzić samodzielnie smile.gif

Pozdrawiam!



--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post
Maciek1705
post 3.12.2010, 18:04:20
Post #3





Grupa: Zarejestrowani
Postów: 157
Pomógł: 3
Dołączył: 15.06.2009

Ostrzeżenie: (0%)
-----


albo poczytać o jquery countdown http://keith-wood.name/countdown.html
Go to the top of the page
+Quote Post
Croos22
post 3.12.2010, 19:40:43
Post #4





Grupa: Zarejestrowani
Postów: 316
Pomógł: 4
Dołączył: 22.03.2010

Ostrzeżenie: (0%)
-----


Hmm... poczytałem trochę na ten temat. Ciekawi mnie jakby można zrobić aby był odporny na odświeżanie. Sesje i ciasteczka nie bardzo ponieważ chciałbym to udostępnić a nie że tylko i wyłącznie ja widzę aktualne odliczanie. Zapytam czy jest realne aby przy zakończonym odliczaniu zrobiło update np. +1 (to akurat wiem jak) i przy kolejnym odliczaniu wyciągnąć ten rekord co aktualizowałem i dać 1*250 (czyli każde odliczanie wymagało by dłuższego wyczekiwania) liczba w miejscu jedynki by wzrastała z każdym update o 1.
Go to the top of the page
+Quote Post
modern-web
post 3.12.2010, 21:41:41
Post #5





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Jeśli chcesz bez odświeżania strony to ja polecam Flash + ActionScript 3.0.
Możesz także kombinować z AJAX-em winksmiley.jpg

Pozdrawiam.


--------------------
Pomogłem? Kliknij `Pomógł`. To nic nie kosztuje, a mnie usatysfakcjonuje! ;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 7.05.2025 - 06:10