Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie czasu
Forum PHP.pl > Forum > PHP
Maciek316
Czesc,
Mam problem z odczytywaniem i sprawdzaniem pozostałego czasu.
Zrobiłem skrypt zapisujący ilość dni w tabeli np 21 * 86400.
I teraz chce odczytać, np. pozostało ci 21 dni do końca...
Jak to zrobić?
!*!
aktualny czas - czas z bazy = czas jaki pozostał date strtotime
Maciek316
czyli coś takiego?:
gracz['czas_misji'] - date("H:i:s",time()) = ? Tego nie rozumiem biggrin.gif
!*!
Mniej więcej, chociaż nie wiem po co w date() potrzebny Ci time()... zobacz tu http://webmade.org/porady/data-php.php
johny_s
http://www.php.net/manual/pl/datetime.diff.php
Maciek316
Poczytałem trochę i zrobiłem tak:
  1. $time = query("SELECT time FROM sponsor WHERE id_s=".$_GET['s']." LIMIT 1");
  2. $czas = time();
  3. $sponsor = $czas + ($time['time'] * 86400);
  4. query("UPDATE users SET sponsor_czas=".$sponsor.", sponsor_id=".$_GET['s']." WHERE user=".$player['user']." LIMIT 1");

i ładnie zapisuje czas do bazy danych, lecz po sprawdzeniu ile zostało czasu do końca sponsora, ciągle się wyświetla informacja że już się czas skończył.
  1. if($sponsor > $czas){
  2. echo "coś ala odliczanie";
  3. }
  4. else
  5. {
  6. query("UPDATE users SET sponsor_czas='0', sponsor_id=-1 WHERE user=".$player['user']." LIMIT 1");
  7. echo 'Skończył się twój sponsoring!</br>
  8. }

Ciągle się wyświetla else...

refreeeeesh
irmidjusz
Skoro zawsze wykonuje się kod z else, to znaczy, że $sponsor <= $czas, a to znaczy, że ($time['time'] * 86400) <= 0, a to może znaczyć, że $time['time'] jest liczbą równą 0, lub jest liczbą mniejszą od 0, lub nie jest liczbą, co daje 0 w wyniku rzutowania na typ int podczas mnożenia.

A co to za funkcja query()? smile.gif
Maciek316
Oj, już wiem co było problemem biggrin.gif
  1. if($sponsor > $czas){

a przecież czas zapisywałem do innej zmiennej biggrin.gif
W każdym razie, teraz już działa.
A i jeszcze jedno jakim działaniem mogę osiągnąć żeby czas był przeliczany na dni.
  1. time() + (21 * 86400)

jeśli podziele potem przez 86400 to zamiast 21 wyjdzie mi ponad 1500 ze względu na time().
zielu001
  1. date('j',time() + (21 * 86400));


Poczytaj o time(); , date(); i czytelności kodu ..
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.