Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z if'ami
Forum PHP.pl > Forum > Przedszkole
ZaXaZ
  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)
Turson
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)
golabow
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
ZaXaZ
@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.
golabow
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.
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.