Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Odliczanie czasu, pytanie logistyczne
Forum PHP.pl > Forum > Przedszkole
seba22
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.
Grzyw
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().
seba22
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 :/
Grzyw
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.
seba22
I oznacza że wyciągam minuty.
Chce wyciągnąć ilość minut.
Grzyw
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. ?>
seba22
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
kefirek
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. ?>
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.