Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z if'ami, Dzielenie czasu z time()-$recently
ZaXaZ
post
Post #1





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


  1. $ostt = ($_SERVER['REQUEST_TIME']-$xsyz['time']);
  2. $tim = 's';
  3. if ($ostt >= 60){ $ostt/=60; $tim='m'; }
  4. if ($ostt >= 60){ $ostt/=60; $tim='h'; }
  5. if ($ostt >= 24){ $ostt/=24; $tim='d'; }
  6. if ($ostt >= 7){ $ostt/=7; $tim='t'; }


próbuje wyliczyc czas np. "Ostatnio: 2h temu" jednak odkąd dodałem ostatnie dwa ify pokazuje mi np. "Ostatnio 2d temu" przy kilku sekundach... Wie ktoś jak to naprawić? coś żle tam dziele?
(Przypominam że to forum przedszkole tongue.gif)

Ten post edytował ZaXaZ 16.08.2014, 14:47:57


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Jeżeli $ostt = 100 to spełnione są wszystkie warunki i zmienna przypisywana jest wg. ostatniego. Bez sensu. Dodaj górną granicę w każdym warunku. np if($ostt >=7 && $ostt <24)
Go to the top of the page
+Quote Post
golabow
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


napisałem przykładowe rozwiązanie, może Ci pomoże:

  1. <?php
  2. $xsyz['time'] = 1408198413;
  3. $ostt = ($_SERVER['REQUEST_TIME']-$xsyz['time']);
  4. $t = array( 't', 'd', 'h', 'm', 's' );
  5. $t1 = array( 7*24*60*60, 24*60*60, 60*60, 60, 1 );
  6. $wynik = '';
  7. $c = count( $t );
  8. for( $i = 0; $i < $c; $i++ )
  9. {
  10. $tmp = intval( $ostt / $t1[$i] );
  11. $wynik .= $tmp ? $tmp.$t[$i].' ' : '';
  12. $ostt -= $tmp * $t1[$i];
  13. }
  14. echo $wynik;
  15. ?>


edit: poprawione

Ten post edytował golabow 16.08.2014, 16:06:41
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #4





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


@turson, nie wiem jakie są górne w moich ifach, a sie wykonaja tylko jesli beda musialy czyli jesli $ostt = 100 powinien sie wykonac tylko pierwszy a dalej tylko sprawdzi czy true ale nie wykona przeciez...

@golabow, nie rozumiem skryptu, i mam 4 uwagi:
1. tablice lepiej dawac w array() zamiast [] bo nie kazdy to zna a np. moja wersja php nie obsluguje
2. wyliczanie 7*24*60*60 zamiast wpisania gotowego wyniku - choc rozumiem ze to mialo byc zebym zrozumial - ale i tak nie rozumiem o co chodzi w skrypcie biggrin.gif
3. count powinno sie dawac po przecinku w pierwszym arguumencie for zeby wykonalo sie tylko raz zamiast za kazdym razem
4. chyba zbednie uzyty skrocony if... Zamiast uzyc normalnego;


ale dzieki za zaangazowanie, zaraz sie zajme sprawdzaniem waszych odpowiedzi moze mi sie uda cos zrobic.

Ten post edytował ZaXaZ 16.08.2014, 15:48:35


--------------------
Go to the top of the page
+Quote Post
golabow
post
Post #5





Grupa: Zarejestrowani
Postów: 53
Pomógł: 17
Dołączył: 4.07.2014

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


rzeczywiście z tymi tablicami to nawet nie zauważyłem.. za dużo JS.
Skrypt działa w ten sposób:
- Sprawdza ile mieści się całkowicie tygodni, dni.. w danym czasie.
- Jeżeli jest co najmniej jeden tydzień, dzień.. to dopisuje do wyniku tą ilość + skrót
- Odejmuje od czasu ilość zapisanych do wyniku tygodni, dni... więc jeżeli na przykład nie mieści się tydzień to nic nie odejmie bo na zmiennej $tmp jest wartość 0.
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 Aktualny czas: 22.08.2025 - 03:48