Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][Funckje czasu] Odliczanie czasu, Więcej problemów....
danielv13
post 14.12.2007, 17:15:51
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Pisze grę internetową i napotkałem problem...
Jak chcę coś wybudować chce, żeby czas budowy i zakończenia znalazł się w bazie.
Mam do tego kod:
  1. <?
  2.  
  3. if ( $_GET['akcja'] == "budujTartak" )
  4. {
  5. $time = "2:50"; // Czas budowy
  6.  
  7. $godz = explode(":", $time);
  8. $g = $godz[0]+date("G");
  9. $m = $godz[1]+date("i"); // <--- A co jeżeli będzie więcej niż 59??
  10. if ( $m > 59 )
  11. {
  12. $m = $m - 60;
  13. $g = $g++;
  14. }
  15.  
  16. $t = $g.':'.$m;
  17.  
  18. $q = mysql_query("UPDATE users SET budowa = '1', kiedy = ".$t.",
  19.  budowanie = ".$time."
  20.  WHERE id = '1'") or die (mysql_error());
  21. }
  22. ?>

Ten skrypt dodaje do bazy ile czasu sie ma budować i kiedy skończyć...
ale jeżeli jest godz: 23:00 i dodam do niej 2:50 to będą wychodziły liczby większe niż 24..

Potem chce sprawdzić czy budowa jeszcze trwa porównując czas budoway i czas teraźnijszy, jezeli nie zmienna budowa = 0

jak to zrobic?

Ten post edytował danielv13 14.12.2007, 20:00:46
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
SirZooro
post 14.12.2007, 17:26:15
Post #2





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Możesz pobrać za pomocą funkcji time aktualny czas, dodać do niego tyle sekund ile ma trwać budowa. Potem możesz to sobie rozbić na części za pomocą localtime, lub skonwertować na stringa za pomocą date.


--------------------
Go to the top of the page
+Quote Post
danielv13
post 14.12.2007, 17:36:39
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Cytat(SirZooro @ 14.12.2007, 17:26:15 ) *
Możesz pobrać za pomocą funkcji time aktualny czas, dodać do niego tyle sekund ile ma trwać budowa.

Rozumiem
Cytat(SirZooro @ 14.12.2007, 17:26:15 ) *
Potem możesz to sobie rozbić na części za pomocą localtime, lub skonwertować na stringa za pomocą date.

Nie rozumiem :/
Go to the top of the page
+Quote Post
SirZooro
post 14.12.2007, 17:55:42
Post #4





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Poczytaj opisy tamtych funkcji, tam wszystko pisze smile.gif Poza tym wskazane byłoby zapisywać w bazie całą datę i czas (najlepiej w polu typu DATETIME, czy coś w tym stylu), pozwoli to na uniknięcie różnych problemów przy porównywaniu daty/czasu.

Obecny kod możesz poprawić np. tak (nie sprawdzałem czy działa):
  1. <?php
  2. $t = date("G:i", time() + (* 60 + 50) * 60);
  3. ?>


--------------------
Go to the top of the page
+Quote Post
danielv13
post 14.12.2007, 18:00:56
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


Ten kod ma za zadanie dodać 2:50 do czasu?
Edit: Dobra, działa, ale co, jeżeli będe chciał obliczyć czy godzina się zgadza? (czy juz wybudowane?)

Wchodzi user do panelu gdzie się buduje i skrypt sprawdza czy jest godzina większa niż ta która miała być skończona jak to porównać?
I co jeżeli będzie to innego dnia np. sprawdzi za 2 dni?

Moge prosić o pomoc..? smile.gif

Ten post edytował danielv13 14.12.2007, 18:03:44
Go to the top of the page
+Quote Post
SirZooro
post 14.12.2007, 18:06:34
Post #6





Grupa: Zarejestrowani
Postów: 243
Pomógł: 32
Dołączył: 14.06.2007

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


Tak, profilaktycznie postanowiłem sprawdzić:
  1. <?php
  2. $t = date("G:i", time());
  3. print "$t<br>";
  4. $t = date("G:i", time() + (* 60 + 50) * 60);
  5. print "$t<br>";
  6. ?>

Wynik w przeglądarce:
Kod
18:06
20:56


Ten post edytował SirZooro 14.12.2007, 18:07:12


--------------------
Go to the top of the page
+Quote Post
danielv13
post 14.12.2007, 18:09:31
Post #7





Grupa: Zarejestrowani
Postów: 48
Pomógł: 0
Dołączył: 4.12.2006

Ostrzeżenie: (10%)
X----


SirZooro to działa, ale czy formatuje czas z 23 na np. 05:00 ? (Jak za dużo to dodaje do następnej godziny)

Teraz kod sprawdzający czy już wybudowane:
  1. <?
  2. if ( $r['budowa'] == "1" )
  3. {
  4. print $r['kiedy'];
  5. if ( $r['kiedy'] < date("G:i") ) // <--- TUTAJ JEST PROBLEM
  6. {
  7. print ' Budowa trwa';
  8. }
  9. }
  10. ?>


Jak zrobić aby zadziałał?
I jeszcze jedno co jezeli nie wziąlem pod uwage dni?

Ten post edytował danielv13 14.12.2007, 18:31:05
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: 18.07.2025 - 01:43