Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Odliczanie czasu, pytanie logistyczne
seba22
post 13.03.2009, 12:04:04
Post #1





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Mam pytanie,

Potrzebuje wykonać następującą opcję, muszę nadać prawa dostępu przez 15 minut od czasu umieszczenia materiału.
Prosta sprawa.
Trzeba sprawdzić czy minęło te 15 minut, jeżeli NIE to wyświetlamy w formie pozostało Ci 4 minuty na edycję. W przeciwnym wypadku Edycja zablokowana.


No więc zastanawiam się czy zrobić to tak:

zapisać do bazy danych aktualny czas.

Procedura
czas z bazy + 15 minut - ( odjąć ) czas aktualny [? jest możliwa taka operacja ?]

if > 0 then
mozna edytowac materiał : $wynik odejmowania
else
Edycja zablokowana



Dobrze kombinuje ?
Jak przytakniecie to wezmę manuala i to wykodzę.

Powiedzcie tylko jak zapisywać czas do DB.


--------------------
Go to the top of the page
+Quote Post
Grzyw
post 13.03.2009, 12:06:45
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Pewnie, że dobrze kombinujesz.
Jako typ danych w bazie wybierz datetime lub timestamp. Przy dodawaniu kolumny jako timestamp możesz zaznaczyć, że ma domyślnie przyjmować wartość obecną. Przy datetime możesz update'ować przy użyciu kolumna=now().


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
seba22
post 13.03.2009, 14:16:30
Post #3





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Witam,

Dziękuję za odpowiedz.

Mam problem, wykonałem sobie taką platforme testową.

  1. <?
  2.  
  3. $teraz=time();
  4.  
  5. $zbazy=1236947470;
  6. $wyprzedzony=$zbazy+900;
  7.  
  8. $aktualny=$wyprzedzony-$teraz;
  9.  
  10. echo($teraz);
  11. echo('<br>');
  12. echo($wyprzedzony);
  13.  
  14. //echo(date("Y-m-d H:i:s",$aktualny));
  15. echo('<br>');
  16. echo(date("i",$aktualny));
  17. ?>


No i oczywiście nie działa.

Do czasu jak jest +15 do zera odlicza POPRAWNIE.

Jak minie ZERO, to odlicza znowu brednie... teraz np dostaje 32 minuty...
A powinienem dostać 0, null, nothing :/


--------------------
Go to the top of the page
+Quote Post
Grzyw
post 13.03.2009, 14:19:27
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Jeżeli dobrze zrozumiałem, ładowanie do funkcji date() parametru ujemnego nie ma sensu.
  1. <?php
  2. echo(date("i",$aktualny));
  3. ?>


$aktualny to tylko różnica sekund, nie ma sensu wyciągać daty z np. 300 sekund. Tak samo z ujemnej liczby.

Ten post edytował Grzyw 13.03.2009, 14:22:34


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
seba22
post 13.03.2009, 14:22:17
Post #5





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


I oznacza że wyciągam minuty.
Chce wyciągnąć ilość minut.


--------------------
Go to the top of the page
+Quote Post
Grzyw
post 13.03.2009, 14:24:04
Post #6





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Cytat(seba22 @ 13.03.2009, 14:22:17 ) *
I oznacza że wyciągam minuty.
Chce wyciągnąć ilość minut.


  1. <?php
  2. $aktualny = $teraz - $wyprzedzony;
  3. echo ceil($aktualny/60); #liczba minut powyżej 15 regulaminowych, zaokrąglona w górę
  4. echo floor($aktualny/60); #liczba minut powyżej 15 regulaminowych, zaokrąglona w dół
  5. ?>


Ten post edytował Grzyw 13.03.2009, 14:25:24


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
seba22
post 13.03.2009, 14:38:39
Post #7





Grupa: Zarejestrowani
Postów: 293
Pomógł: 4
Dołączył: 28.01.2005

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


Wiem kolego gdzie jest problem.

Liczba jest ujemna:
-3072

Trzeba by dodać po prostu procedurę która sprawdzała by, czy liczba nie jest mniejsza od 0, jezeli tak = 0 minut.
To nawet logiczne, dziękuję.
Wieczorem się tym zajmę.

pozdrawiam


--------------------
Go to the top of the page
+Quote Post
kefirek
post 13.03.2009, 14:43:02
Post #8





Grupa: Zarejestrowani
Postów: 781
Pomógł: 256
Dołączył: 29.06.2008

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


Przecierz wystraczy że do bazy bedziesz dodawał date w postaci time()

A potem robisz tak
  1. <?php
  2. $kiedy = time() - $row['data_z_bazy'];
  3. if($kiedy < 60 * 15 ){
  4. // twój kod  
  5. }
  6. ?>


Ten post edytował kefirek 13.03.2009, 14:43:27
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: 14.08.2025 - 08:51