Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odliczanie czasu
Forum PHP.pl > Forum > Przedszkole
Greg0
Witam ma dziwny problem, którego kompletnie nie rozumiem.
Konkretnie mam skrypt wyświetlający ilość czasu jaka pozostała.

  1. <?php
  2. $date = date(U);
  3. $s = mysql_query("UPDATE `".PREFIX."users` SET user_timerest='$date' WHERE user_id='$id'"); 
  4. $odpoczynek = ($date-(60*5));
  5. $czas = ($stat['user_timerest'] - $odpoczynek);
  6. $zostalo = date('H:i:s', $czas);
  7. <table class=center>
  8. <tr>
  9. <td align=center>
  10. $date Swoje $odpoczynek siły $czas zregenerujesz za $zostalo</span>
  11. </td>
  12. </tr>
  13. </table>";
  14. ?>

I wychodzi z tego 300 sekund. Więc powinno wyświetlać 00:05:00 i odliczać w dół. Niestety niewiadomo skąd wzięła mi się jedna godzina i pokazuje 01:05:00 nie mam pojęcia dlaczego. Pewnie mam gdzieś głupi błąd, którego nie umiem wyłapać.
luniak
Chętnie bym ci pomógł, ale....

NIc z tego co napisałeś nie rozumiem :/
sciana.gif

  1. <?php
  2. $date = date(U);
  3. $s = mysql_query("UPDATE `".PREFIX."users` SET user_timerest='$date' WHERE user_id='$id'"); 
  4. $odpoczynek = ($date-(60*5));
  5. $czas = ($stat['user_timerest'] - $odpoczynek);
  6. $zostalo = date('H:i:s', $czas);
  7. <table class=center>
  8. <tr>
  9. <td align=center>
  10. $date Swoje $odpoczynek siły $czas zregenerujesz za $zostalo</span>
  11. </td>
  12. </tr>
  13. </table>";
  14. ?>


1.Co to jest to twoje $s i poco tu to coś skoro nie ma do tego nigdzie później odwołania??
2. Jak możesz się odwoływać do tablicy $stat['user_timerest'] skoro nigdzie nie masz jej zadeklarowanej??
3. i co to jest date(U)questionmark.gif
Greg0
Ad.1 i 2 coś mi wygląda że nie możesz mi pomóc bo umiesz to gorzej niż ja. $s można pominąć bo skopiowałem to nieświadomie w polu user_timerest w bazie mam czas w sekundach jak to robi time ale za pomocą date bo date nie pobiera czasu z komputera oglądającego stronę.
Ad.3 $date('U') to to samo co time() odsyłam do http://www.php.net/manual/pl/function.date.php

A chodzi o to że w bazie danych mam czas w którym użytkownik wszedł na stronę i pobierając ją z bazy danych (nie widze potrzeby dawania tu połączenia z bazą ani wywołań select z innych plików) tworzę tym różnicę(sama matematyka):
  1. <?php
  2. $odpoczynek = ($date-(60*5)); //czas minus 5 minut
  3. $czas = ($stat['user_timerest'] - $odpoczynek); //przykład liczb na dole
  4. $zostalo = date('H:i:s', $czas); //zamieniam go na godziny:minuty:sekundy
  5. ?>

co daje mi czas odliczany w dół od momentu wejścia na te stronę (w tym wypadku jest to 5minut)
przykład
  1. <?php
  2. $czas = (1203698065 - 1203697765) //daje to 300
  3. $zostalo = date('H:i:s', 300); //powinno dać 00:05:00
  4. ?>

niestety 00:05:00 nie wyświetla zamiast tego dodaje jeszcze jedną godzinę 01:05:00
l0ud
cóż... znacznik czasu służy do czegoś innego. On określa [w serwerach na windowsie] ile sekund minęło od 01-01-1970 1:00 . Tak więc 01-01-1970 1:00 = w tym znaczniku czasu 0. Twoje 300 dodaje pięć minut do tej daty...
luniak
sory faktycznie nie doczytałem :/ co do 1 mój błąd
a co do trzeciego nie znałem tego parametu funkcji date()

a co do drugiego skoro, jak twierdzisz :
"nie możesz mi pomóc bo umiesz to gorzej niż ja"
wyjaśnij mi z łaski swojej czym jest
$stat['user_timerest']questionmark.gif
Greg0
Tym, bo zapytanie mam zdeklarowane w innym includowanym pliku.
  1. <?php
  2. $stat = mysql_fetch_array(mysql_query("SELECT * FROM `".PREFIX."users` WHERE user_id='$id'"));
  3. echo "$stat[user_timerest]";
  4. ?>

nad zapytaniem mam wywołane jeszcze połączenie z bazą więc nie widzę nic dziwnego w moim skrypcie

P.S. przez to wszystko zapomniałem podziękować
I jeszcze jedno pytanie więc jeśli powiedzmy robie gre gdzie te pięć minut musi być odliczone to jeżeli dam time() który pobiera czas z naszego komputera ktoś łatwo może ten skrypt wykiwać zmieniając u siebie godzinę.
luniak
No tak ale wtym fragmęcie kóry podałeś na opczątku nie było widomo czym jest ta twojea zmienna biggrin.gif

Ale mam pomysł jak rozwiązać twój problem biggrin.gif
poprostu odjemij tą godzinę ok $date i wszystko bbędzie ok:D

<?php
$odpoczynek = ($date-(60*5)); //czas minus 5 minut
$czas = ($stat['user_timerest'] - $odpoczynek); //przykład liczb na dole
$czas = $czas - 3600;
$zostalo = date('H:i:s', $czas); //zamieniam go na godziny:minuty:sekundy
?>
Greg0
Faktycznie to też jest jakieś rozwiązanie, z którego chyba skorzystam. Dziękuję również smile.gif
l0ud
Znacznik czasu w unixie zaczyna się od 13 grudnia 1901 20:45:54 - po przeniesieniu na serwer to rozwiązanie prawdopodobnie przestanie działać. Zresztą sam pomysł przekazania znacznika w postaci liczby ujemnej jest dość... szalony tongue.gif

Greg0, nie zrozumiałem zbyt Twojego pytania... time zawsze pobiera czas z serwera, w końcu skrypty php wykonują się po jego stronie...
Greg0
hmm to może mi się tak zmienia dlatego że mam to postawione na moim komputerze haha.gif ok ok zmieniam na time() już rozumiem biggrin.gif
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.