Napisałem pewien prosty skrypt php i chcę go teraz zoptymalizować. Mam jedną zagwozdkę, na którą nie mam pomysłu. Oto ona:
W skrypcie ważną rolę odgrywa zmienna miesiąc wybrana przez użytkownika - chodzi o to, że użytkownik ma do wyboru kilka miesięcy, przekazuje wybór za pomocą $_GET, a następnie wyświetlane są dane z wybranego miesiąca.
Jest jednak mały problem: jeśli istnieją dane z miesiąca poprzedniego, to ostatni ich wiersz musi się pojawić w bieżącym zestawieniu. Zmienna $_GET['mth'] (czyli ta przechowująca aktualnie wybrany miesiąc) ma format MM, a zapytanie sql które stosuję do wyciągnięcia wierszy z danego miesiąca:
SELECT DATA, wartosc FROM fw WHERE DATA LIKE "%-'.$_GET['mth'].'-%" ORDER BY DATA ASC;
Jeśli nie widać tego od razu, to tłumaczę: dla marca zapytanie to wyszukuje wyrazów z "-03-", dla kwietnia z "-04" etc.
Żeby pobrać ostatni wiersz z poprzedniego miesiąca stosuję:
SELECT wartosc FROM fw WHERE DATA LIKE "%-'.$prev.'-%" ORDER BY DATA DESC LIMIT 1 ;
Niestety, zmienną $prev otrzymuję w nieelegancki sposób, a mianowicie instrukcją switch:
<?php switch($_GET['mth']) { // ustawienie poprzedniego miesiąca... jakby to zrobić krócej? case '02': $prev='01'; break; case '03': $prev='02'; break; case '04': $prev='03'; break; case '05': $prev='04'; break; case '06': $prev='05'; break; case '07': $prev='06'; break; case '08': $prev='07'; break; case '09': $prev='08'; break; case '10': $prev='09'; break; case '11': $prev='10'; break; case '12': $prev='11'; break; } ?>
Nie wiem jednak jak zrobić to inaczej, bo zmienna $_GET['mth'] nie jest przecież liczbą, więc nie mogę po prostu odjąć od niej jedności.
Bardzo proszę o wskazówki - być może już sam pomysł na pobieranie wierszy z danego miesiąca jest zbyt skomplikowane, bo można to zrobić za pomocą narzędzi ukrytych w MySQL, kto wie?