Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP] Odliczanie (Powiązanie JS z PHP)
Lirdoner
post
Post #1





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Witam potrzebuję zrobić takie coś, że gość jak wejdzie na jedną podstronę to rozpocznie się odliczanie od 15 minut w dół
Jak odliczanie się skończy to wykona się pewien skrypt php
Odliczanie nie może być 0 po odświeżeniu strony a więc

Do bazy dodaje rekord z czasem na 00:15:00
Wyciągam go potem do zmiennej tak że
$zmienna = '00:15:00';
I co zrobić teraz aby javascript zaczął odliczanie od 00:15:00 ,a potem co sekunde odliczony czas przenosił do $zmienna2?
Go to the top of the page
+Quote Post
Pacio
post
Post #2





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

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


Z tego co zrozumialem, to chcesz aby odliczanie od 00:15:00 rozpoczelo sie przy pierwszym wejsciu na strone i bez wzgledu na odswiezanie/odwiedzanie podstron, przy 00:00:00 wykonalo konkretny skrypt php.

Widze to w taki sposob:
Sprawdzasz czy gosc wchodzi po raz pierwszy
- jesli tak, to wypluwasz w js 00:15:00 i zaczynasz odliczac, co sekunde wysylajac aktualny stan licznika do php, ktory zapisujesz np. w zmiennej sesyjnej
- jesli nie, wypluwasz aktualny stan licznika ze zmiennej sesyjnej i nadal odliczasz w dol
Po kazdej zmiane licznika sprawdzasz czy doszlo do 0, jesli tak to przekierowanie pod odpowiedni url.


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
Lirdoner
post
Post #3





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


No oktylko problem mam z tym jak wyslac z js do php aktualny stan licznika
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Masz kod timera, który wykorzystuję na stronie. Łatwo go zaadoptujesz do swoich potrzeb:

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. <!-- <![CDATA[
  3. function wykonaj() {
  4. /* jakaś operacja, np.: */
  5. location.href="http://forum.php.pl/index.php/";
  6. }
  7. liczbasekund = 1800;
  8. teraz = 0;
  9. function zegar() {
  10. // wyliczanie roznicy
  11. var sekund = Math.abs(liczbasekund-teraz);
  12. var minut = Math.floor(sekund/60);
  13. var godzin = Math.floor(minut/60);
  14. // wyliczanie okresu
  15. sekund = Math.floor(sekund-minut*60);
  16. minut = Math.floor(minut-godzin*60);
  17. var roznica="Do końca pozostało "+((minut<10)?"0":"")+minut+":"+((sekund<10)?"0":"")+sekund;
  18. document.getElementById("stoper").innerHTML = roznica;
  19. if (teraz<liczbasekund) {
  20. teraz++;
  21. setTimeout("zegar()",1000);
  22. } else {
  23. document.getElementById("stoper").innerHTML = "Czas minął...";
  24. wykonaj();
  25. /* tu można wywołać inne zdarzenia */
  26. }
  27. }
  28. zegar();
  29. // ]]> -->
  30. </script>
[JAVASCRIPT] pobierz, plaintext

Wywołujesz:
  1. <div id="stoper"><!-- --></div>

Jeżeli chcesz przekazywać coś do php, kombinuj tak (np. w linku):
[JAVASCRIPT] pobierz, plaintext
  1. function wyslij() {
  2. img = new Image();
  3. img.src = "http://www.serwer.pl/katalog/index.php?opcja=6&wiek=25";
  4. }
[JAVASCRIPT] pobierz, plaintext



Ten post edytował Kshyhoo 16.01.2010, 23:13:45


--------------------
Go to the top of the page
+Quote Post
Pacio
post
Post #5





Grupa: Zarejestrowani
Postów: 105
Pomógł: 27
Dołączył: 30.10.2005
Skąd: Lublin

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


Cytat(Lirdoner @ 16.01.2010, 23:01:14 ) *
No oktylko problem mam z tym jak wyslac z js do php aktualny stan licznika


Ajaxem mozesz wyslac do skryptu php jako zmienna:
skrypt.php?stan=00:12:43


--------------------
Mój Blog Militarny: http://1rBlog.pl
Go to the top of the page
+Quote Post
zegarek84
post
Post #6





Grupa: Zarejestrowani
Postów: 1 332
Pomógł: 294
Dołączył: 12.10.2008
Skąd: Olkusz

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


Cytat(Pacio @ 16.01.2010, 23:11:57 ) *
Ajaxem mozesz wyslac do skryptu php jako zmienna:
skrypt.php?stan=00:12:43

zamiast bawić się ajaxem to do przesłania paramatru przez get możesz użyć obiektu new Image
[JAVASCRIPT] pobierz, plaintext
  1. var Image_on = new Image();
  2. Image_on.src = 'adres_do_obrazka_który_nie_jest_obrazkiem';
[JAVASCRIPT] pobierz, plaintext



a nie wygodniej to by było w cookies?? winksmiley.jpg - i nie musiałbyś co chwila wysyłać zapytań do serwera...

Ten post edytował zegarek84 16.01.2010, 23:24:40


--------------------
Jeśli twoja ręka rusza do przodu powstrzymaj swój gniew; gdy wyprzedza cię twój gniew - wycofaj rękę.

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Pewnie, że można:
[JAVASCRIPT] pobierz, plaintext
  1. function ustawcookie(nazwa, wartosc, czas, sciezka, domena) {
  2. document.cookie = nazwa + "=" + wartosc + ";expires=" + czas + ";path=" + sciezka + ";domain="+domena;
  3. }
  4.  
  5. wygasa = new Date(new Date().getTime()+1000*60*60*24*30).toGMTString() // 30 dni
  6. ustawcookie('nazwaCiacha', 'FajneCiacho', wygasa, '/', '.serwer.pl');
[JAVASCRIPT] pobierz, plaintext


Ten post edytował Kshyhoo 16.01.2010, 23:28:29


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post
Post #8





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Hmm... w cookie to byłby dobry pomysł, ale mi trzeba coś takiego jak jest w grach internetowych np. ogame lub zielone imperium
W ogame jak się rozwija bydynki trzeba czekać załóżmy te 15 minut i user może się wylogować a kiedy znowu się zaloguje czas będzie zmniejszony tzw. o tyle ile był wylogowany czyli wszystko wykonuje się bez wiedzy użytkownika

Czy to wtedy też jest na cookie?
albo jaka jest zasada tego skryptu, jak on działa?
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Rozwiązań jest co najmniej kilka. Możesz np. zapisać timestamp do bazy danych z końcem czasu budowania, po zalogowaniu usera pobierać go i ładować do zmiennej w timerze. Powiedzmy, że czas trwania jakiegoś zdarzenia to 30 minut. Zapisujesz czas do bazy a user się wylogował. Loguje się po 20 minutach ponownie. Wtedy timer zaczyna odliczać czas pobrany z bazy danych. Mam nadzieję, że rozumiesz.


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post
Post #10





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Ale w bazie będzie nadal 30 minut a nie 10
I rozpocznie odliczanie od 30 minut
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




No co Ty, nie potrafisz wyliczyć różnicy? Po za tym, jak zapiszesz czas zakończenia zdarzenia, a nie początek, to nie będzie problemu.


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post
Post #12





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Dobra mam zmienna z rozpoczeciem akcji i muszę teraz ustalić zmienną z zakończeniem więc muszę do tej zmiennej dodać 15 minut do zmiennej z rozpoczęciem

$rozpoczecie = date('20y/m/d H:i:s');
I załóżmy że $rozpoczecie = 2010:01:17 10:00:00
I $zakonczenie ma być równe 2010:01:17 10:15:00

Próbowałem tak
$zakonczenie = $rozpoczecie + '0000/00/00 00:15:00';
Ale nie idzie :/

//już nie ważne
Poradziłem sobie!


Dobra jeszcze jedno

$rozpoczecie = 2010-01-17 17:00:00
$inc = explode(":", $rozpoczecie);
$lol = $inc[1] + 15;
$zakonczenie = "$inc[0]:$lol:$inc[2]";

W powyższym fragmencie dodaje 15 minut i całość zapisuje do $zakonczenie
Ale jak $rozpoczecie miałaby wartość 2010-01-17 17:50:00 to wtedy $zakonczenie miałaby wartość 2010-01-17 17:65:00

Co zrobić aby sekundy przekształcać na minuty, minuty na godziny, godziny na dni?

Ten post edytował Lirdoner 17.01.2010, 12:49:37
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #13





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Czas pobieraj tak:
  1. $time = $_SERVER["REQUEST_TIME"];


--------------------
Go to the top of the page
+Quote Post
Lirdoner
post
Post #14





Grupa: Zarejestrowani
Postów: 500
Pomógł: 1
Dołączył: 29.09.2009

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


Ale ja rozpoczęcie pobieram z bazy danych dodaje to neigo 15 minut zapisuje jako $zakonczenie i znów wysyłam do bazy ale jak minutu przekraczają 60 to zamiast dobrego wpisu w bazie pojawia się 0000-00-00 00:00:00
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #15





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Źle robisz. To nie matematyka, to czas... Musisz przeliczać
  1. $czas = "2010-01-17 18:43:55";
  2. $znacznik = strtotime($czas);
  3. echo $znacznik;
  4. echo "<br />";
  5. echo date("Y-m-d H:i:s", $znacznik); // test poprawności



--------------------
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 Aktualny czas: 21.08.2025 - 19:35