Nie wiem, ja forum działa obecnie, ale zrobiłem plan struktury, na której mogłoby działać:
- Podstawowy poziom to sekcje główne przechowywane w takiej oto tabeli:
CREATE TABLE coyote_f_sections (
section_id int(5) NOT NULL auto_increment,
section_user int(8) NOT NULL default '0',
section_name varchar(128) NOT NULL default '',
section_mod_time datetime NOT NULL default '0000-00-00 0000',
section_description varchar(250) NOT NULL default '',
section_topic_counter smallint(5) NOT NULL default '0',
section_msg_counter smallint(5) NOT NULL default '0',
UNIQUE KEY id (section_id),
) TYPE=MyISAM;
id - identyfikator
user - użytkownik, który ostatnio coś wpisał
name - nazwa sekcji
mod_time - czas ostatniej modyfikacji
description - któtki opisik (jeszcze nie wymyśliłem, gdzie mógłby być, ale mam zarysy pomysłu)
topic_counter - liczba tematów
msg_counter - liczba wiadomości
to miało by być coś takiego, jak poział na stronie głównej forum - programowanie, inne, developer itp. - wszystkie wyświetlone na jednej stronie
- Podsekcje (tak jak teraz "Delphi", "C++") w takiej tabeli:
CREATE TABLE coyote_f_subsections (
subsection_id int(5) NOT NULL auto_increment,
subsection_sec_id int(5) NOT NULL,
subsection_user int(8) NOT NULL default '0',
subsection_name varchar(128) NOT NULL default '',
subsection_mod_time datetime NOT NULL default '0000-00-00 0000',
subsection_description varchar(250) NOT NULL default '',
subsection_topic_counter smallint(5) NOT NULL default '0',
subsection_msg_counter smallint(5) NOT NULL default '0',
UNIQUE KEY id (subsection_id),
) TYPE=MyISAM;
sec_id - id sekcji, w której znajduje się podsekcja.
- Tematy, w takiej tabeli:
CREATE TABLE coyote_f_topics (
topic_id int(5) NOT NULL auto_increment,
topic_subsec_id int(5) NOT NULL,
topic_user_cr int(8) NOT NULL default '0',
topic_user int(8) NOT NULL default '0',
topic_name varchar(128) NOT NULL default '',
topic_mod_time datetime NOT NULL default '0000-00-00 0000',
topic_msg_counter smallint(5) NOT NULL default '0',
UNIQUE KEY id (topic_id),
) TYPE=MyISAM;
subsec_id - id podsekcji, w której jest temat
user_cr - użytkownik, który utworzył temat
- Wiadomości/posty (jak kto woli), w tej tabeli:
CREATE TABLE coyote_f_messages (
message_id int(5) NOT NULL auto_increment,
message_user int(8) NOT NULL default '0',
message_topic_id int(5) NOT NULL,
message_content text NOT NULL,
message_time datetime NOT NULL default '0000-00-00 0000',
message_ip varchar(30) NOT NULL default '',
UNIQUE KEY id (message_id),
FULLTEXT KEY title (message_subject,message_content)
) TYPE=MyISAM;
topic_id - id tematu, w którym jest wiadomość
content - treść
- Budowa forum:
potrzebny do działania forum parametr pliku (chociażby forumcmd) jest tylko jeden, mający np. następującą postać:
pusty parametr albo jego brak - ma zostać otwarta główna strona forum
S4 - ma zostać otwarta lista tematów podsekcji nr. 4
T468 - ma zostać otwarty temat nr. 468
NT5 - tworzenie nowego temat w sekcji nr. 5
NM1260 - tworzenie nowej wiadomości w temacie nr. 1260
To tylko propozycja, ale myślę że sensowna, bo znacznie uprości pracę - nie trzeba kilku parametrów, tylko jeden, który przekazuje potrzebne informacje. Przedrostki literowe których użyłem to też tylko propozycje, gdyby ten system się wam spodobał, trzeba by na pewno uzgodnić dokładną składnię poleceń.