Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][Funckje czasu] Odliczanie czasu
Forum PHP.pl > Forum > Przedszkole
danielv13
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?
SirZooro
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.
danielv13
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 :/
SirZooro
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. ?>
danielv13
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
SirZooro
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
danielv13
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?
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.