Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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 (IMG:style_emoticons/default/tongue.gif) )

Ten post edytował ZaXaZ 16.08.2014, 14:47:57
Go to the top of the page
+Quote Post
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 (IMG:style_emoticons/default/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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 02:19