![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 11.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Mam następujący problem:
Chcę, aby w zależności od daty zmienna przyjmowała określoną wartość, jako, że tych dat może być sporo zdecydowałem się napisać to w switch/case. Chciałem też użyć funkcji now(), gdyż na całej stronie jej stosowałem. Napisałem coś takiego, lecz nie działa, zresztą nie spodziewałem się, że zadziała, ale chciałem spróbować:
I wyskakuje błąd: Parse error: syntax error, unexpected T_LNUMBER.... Domyślam się, że w takiej formie tego się nie da zrobić, ale czy da się to zrobić korzystając z funkcji now()? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Tak sobie nie porównasz.
Użyj http://pl.php.net/manual/en/function.strtotime.php |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 11.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki niby powinno działać, ale:
Parse error: syntax error, unexpected T_IS_SMALLER_OR_EQUAL....
Wskazuje na błąd w miejscu, gdzie jest pierwszy case, wydaje mi się, że to coś z operatorem porównania, ale co? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 389 Pomógł: 141 Dołączył: 11.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze data jest stringiem, bo masz - myślniki, czyli strtotime('2010-03-12').
Po drugie źle porównujesz Kod case (strtotime('2010-03-10')<=$a && $a<=strtotime('2010-03-11')) :
Ten post edytował athei 13.03.2010, 22:40:22 |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 11.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki działa, sam bym tego nie wymyślił (IMG:style_emoticons/default/smile.gif) Masz pomógł.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Cytat zdecydowałem się napisać to w switch/case - bo? Ta instrukcja służy do funkcjonalnego dzielenia kodu, a nie tworzenia de facto pliku danych! Rozumiem, że zmienna ma przyjmować określoną wartość w zależności od przynależności do określonego przedziału?- proste i wydajne, bo gdy znajdziemy dany przedział kończymy wykonywanie kodu no i jak chcesz zmienić liczbę przedziałów to kod PHP będziesz edytował? PHP nie jest od przechowywania danych! Tablicę "dane" trzymasz w pliku lub bazie danych, wystarczy modyfikacja pliku/bazy bez konieczności zmieniania skryptu. Dostałeś gotowy kod, wystarczy odpowiednio użyć funkcji do operowania datą. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 11.03.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale czy ma sens przechowywanie daty w bazie danych? Zamierzam daty ustawić tak by zmienna miała jedną wartość na tydzień i tak by było około 30 dat, czyli kod php będę edytował około raz na 7 miesięcy. Tym bardziej, że w tym kodzie, który mam zachowuję pełną swobodę przypisywania zmiennych określonej dacie, na czym właśnie mi zależało, a w kodzie, który mi podałeś zmienna przyjmuje wartość tylko dla jednego przedziału czasu. Jeszcze takie pytanie, czym różni się to w praktyce? Tym, że ten kod jest zoptymalizowany czy tylko funkcjonalnością, w tym sensie, żeby było łatwiej edytować?
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) ![]() ![]() |
Dziś 30 dat a jutro nie wiadomo ile, należy unikać przechowywania parametrów w kodzie PHP bo jest to niewygodne i niewydajne, program powinien dostać określone parametry i zwrócić jakiś wynik, pisząc kod w ten sposób za pół roku założysz następny topic z tematem "jak zmienić ten kod?". Dorobienie jakiegoś panelu administracyjnego do takiego skryptu jest niemal niemożliwe.
I żaden problem lekko zmodyfikować kod, który podałem: - by zwracał nie tylko numer przedziału, lecz także liczbę 23 czy 56 (lub co zechcesz). Nie trzeba trzymać parametrów w bazie, można w pliku (nawet pliku .php), nakazu nie ma. Wyobrażasz sobie skrypt, gdzie zamiast pliku konfiguracyjnego zmienne są "pozaszywane" w plikach z kodem PHP? Oddzielanie algorytmu od danych wejściowych jest powszechnie stosowaną praktyką. Na co komu skrypt, którego tylko autor umie używać (a i to tylko wtedy, dopóki nie zapomni co tam było)? Prędzej czy później trafi do kosza, już po 2-3 miesiącach zapomnisz zupełnie co kiedyś napisałeś, dlatego warto to robić zgodnie ze sztuką. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.09.2025 - 16:43 |