Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odliczanie czasu
Greg0
post 22.02.2008, 16:58:59
Post #1





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


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ć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
luniak
post 22.02.2008, 17:26:21
Post #2





Grupa: Zarejestrowani
Postów: 171
Pomógł: 36
Dołączył: 12.01.2008
Skąd: Puszcza Mariańska

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


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


--------------------
Jeżeli ktoś na forum Ci pomógł, możesz mu podziękować klikając w opcje "Pomógł" pod jego postem!
--------------------

Go to the top of the page
+Quote Post
Greg0
post 22.02.2008, 17:38:40
Post #3





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


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

Ten post edytował Greg0 22.02.2008, 17:43:38
Go to the top of the page
+Quote Post
l0ud
post 22.02.2008, 17:48:35
Post #4





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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...

Ten post edytował l0ud 22.02.2008, 17:50:19


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
luniak
post 22.02.2008, 17:49:49
Post #5





Grupa: Zarejestrowani
Postów: 171
Pomógł: 36
Dołączył: 12.01.2008
Skąd: Puszcza Mariańska

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


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


--------------------
Jeżeli ktoś na forum Ci pomógł, możesz mu podziękować klikając w opcje "Pomógł" pod jego postem!
--------------------

Go to the top of the page
+Quote Post
Greg0
post 22.02.2008, 17:52:41
Post #6





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


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ę.

Ten post edytował Greg0 22.02.2008, 17:55:30
Go to the top of the page
+Quote Post
luniak
post 22.02.2008, 17:56:59
Post #7





Grupa: Zarejestrowani
Postów: 171
Pomógł: 36
Dołączył: 12.01.2008
Skąd: Puszcza Mariańska

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


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
?>


--------------------
Jeżeli ktoś na forum Ci pomógł, możesz mu podziękować klikając w opcje "Pomógł" pod jego postem!
--------------------

Go to the top of the page
+Quote Post
Greg0
post 22.02.2008, 17:59:21
Post #8





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


Faktycznie to też jest jakieś rozwiązanie, z którego chyba skorzystam. Dziękuję również smile.gif
Go to the top of the page
+Quote Post
l0ud
post 22.02.2008, 18:04:56
Post #9





Grupa: Zarejestrowani
Postów: 1 387
Pomógł: 273
Dołączył: 18.02.2008

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


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...

Ten post edytował l0ud 22.02.2008, 18:05:57


--------------------
XMPP: l0ud@chrome.pl
Go to the top of the page
+Quote Post
Greg0
post 22.02.2008, 18:09:36
Post #10





Grupa: Zarejestrowani
Postów: 264
Pomógł: 54
Dołączył: 31.08.2007
Skąd: Tychy

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


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
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: 24.07.2025 - 17:12