Chciałem stworzyć coś co będzie działać w/g zasad jakie panują na allegro. Udało mi się zmontować następujące rzeczy:
Struktura tabeli w bazie danych:
CREATE TABLE IF NOT EXISTS `categories` ( `CAT_Id` int(11) NOT NULL AUTO_INCREMENT, `PARENT_Id` int(11) NOT NULL DEFAULT '0', `CAT_Name` varchar(155) NOT NULL, `CAT_Url` varchar(75) NOT NULL, `CAT_Description` varchar(255) NOT NULL, `CAT_Sort` int(11) NOT NULL DEFAULT '0', `CAT_Counter` int(11) NOT NULL, `CAT_Active` int(11) NOT NULL DEFAULT '1', PRIMARY KEY (`CAT_Id`), KEY `INDEX_GLOWNY` (`CAT_Id`,`PARENT_Id`,`CAT_Counter`,`CAT_Active`) USING BTREE, KEY `SORT` (`PARENT_Id`,`CAT_Sort`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=106 ;
Oraz zapytanie które obsługuje:
SELECT `CAT_Id` AS `id`, `PARENT_Id` AS `parent`, `CAT_Name` AS `name`, `CAT_Url` AS `url`, `CAT_Counter` AS `licznik` FROM `categories` AS `c` WHERE ( (`c`.`CAT_Active` = 1) AND (`c`.`CAT_Counter` > 0) ) AND ( (`c`.`CAT_Id` = {#ID}) OR (`c`.`PARENT_Id` = {#ID}) OR (`c`.`PARENT_Id` = ( SELECT `c2`.`CAT_Id` FROM `categories` AS `c2` WHERE (`c2`.`CAT_Id` = ( SELECT `c3`.`PARENT_Id` FROM `categories` AS `c3` WHERE (`c3`.`CAT_Id` = {#ID}) LIMIT 1 ) ) LIMIT 1 ) ) OR (`c`.`PARENT_Id` = ( SELECT `c3`.`PARENT_Id` FROM `categories` AS `c3` WHERE (`c3`.`CAT_Id` = {#ID}) LIMIT 1 ) ) ) ORDER BY `c`.`PARENT_Id` ASC, `c`.`CAT_Sort` ASC
W miejscu gdzie występuje ciąg {#ID} należy wprowadzić wybraną kategorie...
Licznik jest wyliczany cyklicznie w cronie raz na kilka minut...
Póki co chcę się dowiedzieć co sądzicie o takim czymś - dobrze czy źle?