![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Piszę w PHP skrypt, który oblicza różnicę czasu w minutach od daty zapisanej w ciastku a daty aktualnej. W ten sposób otrzymuje wynik ile czasu pozostało do 'czegoś'. Wynik przedstawiam tak: Pozostało np. 25 minut. Jednak co wyświetlić, jeśli pozostało 2 minuty ? (zmiana 'minut' <-> 'minuty') W tym celu piszę skrypt, który odczytuje ilość czsu który pozostał, porównuje go z odpowiednią wartością i zwaraca wynik w postaci 'minut' || 'minuty' || 'minuta'. Tutaj zaczyna się cały problem ponieważ chcę wartość "przerobionej" funkcji date(); porównać do liczby. Jeśli pozostało np 25 minut ma wyświetlić wyraz "minut" a nie minuty czy minuta. A z tego co widze to jest to niemożliwe. Pytanie więc jak przedstawić wartość date("i") za pomocą liczby, żebym mógł ją porównać do jakieś liczby, zeby skrypt mógł się wykonać (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Lub w ogóle jakieś inne rozwiązanie pochodne tego co próbuję tu stworzyć (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
Może troszkę zamotałem ale nie potrafie tego ogarnąć (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Jeśli ktoś chce mogę wrzucić ten kawałek kodu gdzie to usiłuje zrobić. Proszę o jakąś wskazówkę bo sam nie daje rady z tym problemem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 890 Pomógł: 339 Dołączył: 14.12.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Pozostało 24 min.
Pozostało 29 min. Pozostało 1 min. Działa? Działa (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Trochę inaczej:
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Nie rozumiem prawie nic, ale z tego co podałeś to:
Edit: To jest ok jeśli zakładamy, że po 60 min będziemy zamieniali na godziny. ;] Ten post edytował ShadowD 25.06.2009, 00:41:52 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Dobra jakoś wspólnie wykombinowaliśmy z innym forumowiczem...
i to wszystko rozwiązuje. Tak przy okazji mam jeszcze jedno pytanie. Mam napisaną funkcję if(); wyglądającą jak tasiemiec... da się to jakość skrócić używająć jakieś alternatywnej metody? czy tam pętli (o ile to możliwe)..
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Np: if($liczba > 2 && $liczba < 10) by nie wymieniać 10 liczb, jeszcze można switch ale przedział to lepsza metoda.
Edit: to co poprawiłem na górze działa właśnie tak jak twoje tylko na przedziałach... Edit2: Po co Ci pusta instrukcja ELSE i dlaczego porównujesz liczby z ciągami? Ten post edytował ShadowD 25.06.2009, 00:47:18 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Dzięki panowie, nie pomyślałem o przedziałach liczbowych. Generalnie udało mi się skrócić funkcję do takiej postaci:
Pozbylem się pustej 'else'. Miło, że jak się tworzy o tej porze i potrzebuje się porady na forum to ktoś nie śpi i pomoże ;D I żeby nie było nudno jeszcze jedno pytanie: dlaczego jesli pozostał czas od 9 minut do 1 to date(); zwraca wartość 09, 08 ... 01 ? a nie 9, 8, ... 1 ? ;> Da się to jakoś zmodyfikować ? Właściwie to mi to nie przeszkadza, że wyświetla 06 minut a nie 6 minut ale zawsze jakieś doświadczenie więcej (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) EDIT: zorientowałem się, że przedzieły liczb są nieprawidłowe więc zmodyfikowałem powyższy kod zmieniając wielkości przedziałów. EDIT 2: Jak by wyglądała ta funkcja (mam na myśli wersję tasiemcową) za pomocą swith ? Nigdy się jeszcze z tym nie bawiłem bo nie miałem potrzeby (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Ten post edytował andrzejt17 25.06.2009, 01:12:34 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Jakoś tak się przyjęło, że godzinę podajemy np. 12:05 a nie 12:5...
Możesz pomnożyć przez jeden powinno dać to zamierzony rezultat. ;] A poza tym można by to napisać np tak:
Ten post edytował ShadowD 25.06.2009, 01:13:47 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Przetestuje mnożenie (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
a co do kodu... nie zadziała. Nie da rady porównać wynik date("i"); z liczną czy przedziałem bez '' Musiałby wyglądać tak:
ponad to używanie === zamiast == przyspiesza wykonywanie kodu (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Nieznacznie co prawda (w wypadku kilku poleceń) ale przyspiesza ;P (przy większej ilości poleceń zauważalna różnica (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) ) |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Mnożenie zamienia ciąg na liczbę, więc porównanie liczb będzie szybsze niż ciągów, więc nie musisz używać ' ani " jak już się tak prędkości czepiamy. (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Niestety mnożenie nie zdało egzaminu ponad to prze przedziałach nie musiałbym używać ' ani " pod warunkiem, że do przedziału wstawiał bym liczbę a ja wstawiam ciąg (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) więc muszę używać ' nie mniej jednak w wypadku mnożenia można sobie darować (IMG:http://forum.php.pl/style_emoticons/default/haha.gif)
Jest jeszcze jakaś alternatywa sposobu mnożenia ? Żeby było jasno zamiast np 09 to 9 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) EDIT: jednak działa (IMG:http://forum.php.pl/style_emoticons/default/haha.gif) Dziękówa (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Ten post edytował andrzejt17 25.06.2009, 01:35:28 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Wynikiem jest: Kod Brawo - dziala! (0000002) (2) *Przetestowane Co oznacza, że możemy porównywać ciąg o wartości '02' z liczbą 2. A mnożenie przez jeden usuwa wszystkie pierwsze zera. I tyle, bo IRCa z forum robimy. Ten post edytował ShadowD 25.06.2009, 01:42:14 |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 28 Pomógł: 0 Dołączył: 24.06.2009 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
LooL ...
Teraz działa! A jak wtedy pisalem:
to nie działało... ehh a przecież to na jedno wychodzi... Tak czy inaczej prace nad skryptem i stroną idą dalej więc kij z tym (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Dzięki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) mo'sz'na zamknąć (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:52 |