Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Odliczanie czasu
Greg0
post
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
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 :/
(IMG:http://forum.php.pl/style_emoticons/default/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)(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Greg0
post
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
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
Go to the top of the page
+Quote Post
luniak
post
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'](IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
Greg0
post
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
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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Ale mam pomysł jak rozwiązać twój problem (IMG:http://forum.php.pl/style_emoticons/default/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
?>
Go to the top of the page
+Quote Post
Greg0
post
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ż (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
l0ud
post
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 (IMG:http://forum.php.pl/style_emoticons/default/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
Go to the top of the page
+Quote Post
Greg0
post
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 (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) ok ok zmieniam na time() już rozumiem (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 22:17