Cześć.
W ramach swojej pasji biegowej od czasu do czasu organizujemy jakiś bieg. Napisałem do tego stronę przedstawiającą wyniki z bazy danych.
Baza danych składa się z 2 tabel:
CREATE TABLE `zawody` (
`zw_index` int(11) NOT NULL AUTO_INCREMENT,
`zw_nazwa` varchar(100) COLLATE utf8_polish_ci NOT NULL,
`zw_miasto` varchar(50) COLLATE utf8_polish_ci NOT NULL,
`zw_data` varchar(20) COLLATE utf8_polish_ci NOT NULL,
`zw_dystans` int(11) NOT NULL,
`zw_dyplom` int(11) NOT NULL DEFAULT '0',
`zw_media` int(11) NOT NULL DEFAULT '0',
`zw_widocznosc` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`zw_index`)
) ENGINE=MyISAM AUTO_INCREMENT=1000001 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
CREATE TABLE `wyniki` (
`idx` int(11) NOT NULL AUTO_INCREMENT,
`zawody` int(11) NOT NULL,
`miejsce` int(11) NOT NULL,
`numer` int(11) NOT NULL,
`nazwisko_imie` varchar(30) COLLATE utf8_polish_ci NOT NULL,
`nazwisko` varchar(25) COLLATE utf8_polish_ci NOT NULL,
`imie` varchar(20) COLLATE utf8_polish_ci NOT NULL,
`plec` varchar(1) COLLATE utf8_polish_ci NOT NULL,
`miejsceplec` int(11) NOT NULL,
`rocznik` int(11) NOT NULL,
`kategoria` varchar(3) COLLATE utf8_polish_ci NOT NULL,
`miejscekat` int(11) NOT NULL,
`mieszkancy` int(11) NOT NULL,
`kraj` varchar(20) COLLATE utf8_polish_ci NOT NULL,
`klub` varchar(50) COLLATE utf8_polish_ci NOT NULL,
`miasto` varchar(30) COLLATE utf8_polish_ci NOT NULL,
`czas_netto` time NOT NULL,
`czas_brutto` time NOT NULL,
`strata` time NOT NULL,
`tempo` time NOT NULL,
PRIMARY KEY (`idx`)
) ENGINE=MyISAM AUTO_INCREMENT=2000001 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
Teraz skrypty:
Pierwszy skrypt pobiera z bazy danych informację o zawodach i wyświetla tylko te, których `zw_widocznosc` ustawiona jest na 1 i wyświetla je w formie listy. Lista to odnośniki do skryptu skryptu 2., do którego informacja o indeksie wybranych zawodów jest przesyłana GETem.
Drugi skrypt wyniki.php wyświetla listę wyników zawodów wg przesłanego indeksu zawodów.
Podczas wyświetlania wyników sprawdzane jest:
czy zawodnik jest kobietą, jeśli tak, to wiersz jest kolorowany stylem wiersza tabeli
czy w tabeli pola `zw_dyplom` oraz `zw_media` są ustawione na 1 - jeśli tak, to pojawia się przy każdym zawodniku link do 3 skryptu wynik_personal.php
Do tego jeszcze nad tabelą generowane są linki do wyników w poszczególnych kategoriach wiekowych. Linki te są generowane dynamicznie na podstawie zapytania:
SELECT distinct `kategoria`FROM `wyniki` WHERE `zawody` = ".$zw_index." order by `kategoria`
Do tego osobnym zapytaniem sprawdzane jest, czy są wyniki w kategorii mieszkańców, jeże tak, to też taka kategoria jest dokładana do listy kategorii.
Klikając w poszczególne kategorie przesyłane są GETem informacje o tym do tego samego skryptu php wyniki.php?idx=31415094245&kat=K30
Skrypt wynik_personal.php wyświetla już informację o wyniku klikniętego zawodnika. Sprawdzane jest, czy `zw_dyplom` jest ustawione na 1. Jeżeli tak, to generowany jest podgląd dyplomu w JPG oraz pojawia się link to skryptu generującego dyplom w PDFie. generowany jest również link umożliwiający udostępnienie tej strony z wynikiem na facebooku.
Tak to w ogromnym skrócie wygląda.
W ramach ćwiczeń chciałem to napisać obiektowo, ale ugrzązłem na etapie rozmyślań :-(. I tutaj mam pytanie do bardziej doświadczonych kolegów. Czy dla tak małego i raczej skończonego projektu warto „bawić” się „w obiektówkę”? Jeżeli tak, to czy wg tego opisu jesteście w stanie podpowiedzieć mi jakie obiekty z jakimi metodami tutaj utworzyć?
Czy dla listy zawodów utworzyć klasę Zawody i utworzyć tyle jej obiektów ile zawodów „wypluje” baza danych, czy może wszystko wsadzić do klasy Zawody łącznie z pobraniem ich z bazy danych, a poszczególne zawody przechowywać jako atrybuty, np.: protected $_zawody = array();?
Na ten moment chyba tyle, o ile ktoś zechce coś poradzić.