Vznik fóra
Toto fórum vzniklo jako semestrální práce Aleše Jandy do předměty
X36WWW - "Internet a WWW" na fakultě Elektrotechnické, ČVUT. Jsou použity
jazyky XHTML 1.1 Strict, CSS Level 2, ze skriptů PHP 4.x a JavaScript a jako
úložný prostor databáze MySQL.
Vlastnosti fóra
Fórum je plně vláknové, lze tedy odpovídat na libovolné příspěvky a ty se
zobrazují podle sledu odpovědí.
Co fórum umí:
- vláknové uspořádání - řazení podle obsahu, ne podle data
- automatická podpora smajlíků - značky :-), :-( atd. se převedou na odpovídající obrázky
- automatický převod URI adres do (X)HTML odkazů - vše, co začíná "http://" nebo "www." se převede na odkaz na odpovídající stránku (lze kliknout)
- podpora základního formátování - text uvnitř značek [bold],[/bold] a [ital],[/ital] se zobrazí formátovaně. Při vkládání se provádí validace na správné použití (neuzavírání, křížení tagů atd.)
- náhled příspěvku - před vložením je možno vidět příspěvek tak, jak se ve výsledku zobrazí
- zachovávání tiskových pravidel - alespoň se snaží, nezalomuje řádek za slovem do 4 znaků (typicky za předložkami a spojkami)
- validace vstupu - vkládané hodnoty se testují na straně klienta i serveru
Co bude fórum umět:
- vyhledávání v příspěvcích - bude možno fulttextově v diskuzi vyhledávat
- kontrola předběhnutí odpovědi - pokud uživatel píše odpověď na nějaký příspěvek a někdo ho mezitím s odpovědí "předběhne", zobrazí se upozornění
- lepší validace vstupu - o něco vychytanější, k tomu myslím není co dodat
Tato diskuze je velice šetrná k databázi. K vypsání celé stromové struktury
příspěvků stačí
pouze jeden dotaz do databáze! Je to díky
metodě ukládání příspěvků (viz níže). Tuto vlastnost jsem udělal natruc všem
kamarádům a spolužákům, kteří nevěřili, že je něco takového možné.
Diskuze obsahuje 1 speciální smajlík
- veselý kýbl (lze ho napsat jako "[kýbl]"), který je inspirovaný smajlíkem
banánu použitý na
www.owebu.cz. Tímto vzdávám
hold autorům serveru owebu.cz za tento nápad (pozn.: tento smajlík nemá žádnou
speciální funkci, pro někoho je vyjádřením radosti).
Jak jsou udělána vkládání příspěvků do vláken:
Diskuzi si je možno představit jako stromovou strukturu. Příspěvky, které jsou
na vrcholu stromu, mají atribut
vlakno "1", "2", "3" atd., postupně
za sebou.
Příspěvky, které jsou odpovědí příspěvkům na vrcholu stromu, mají atribut
vlakno "1001", "1002" (pro odpověď na "1"), "2001", "2002", "2003"
(pro odpověď na "2") atd. - k atrinutu
vlakno na vrcholu stromu
se přidají 3 znaky, které určují "podvlákno".
Příspěvky třetího řádu budou mít
vlakno "1001001", "1001002",
"1001003" atd.
Z každého příspěvku tedy lze vysledovat, kde přesně se ve stromu nachází.
A jak se hledá:
stačí 1 požadavek pro vypsání celého stromu:
SELECT * FROM forum ORDER BY vlakno
Tím se strom i sám seřadí podle vláken příspěvků.
Chci-li vypsat pouze příspěvky z vlákna "2", bude to
SELECT * FROM forum WHERE vlakno LIKE "B%" ORDER BY vlakno
A vkládání:
stačí pouze zjistit nejvyšší použité číslo podvlákna a vytvořit o 1 větší.
Tedy jsou-li v databázi záznamy "1", "2", "2001", "3" a chceme další odpověď
pro "2", bude to "2002".
Toto řešení je velice snadné na implementaci, šetrné k databázi, de facto stačí
jeden požadavek na databázi pro výpis celého stromu.
Na druhou stranu je omezený počet příspěvků v jedné hloubce stromu. To je rovno
rozsahu hodnot v atributu
vlakno umocněné na počet cifer.
V tomto případě je rozsah hodnot 0-9, A-Z a jsou zde 3 "cifry", takže počet
možných odpovědí je 46656, což je myslím zatím dost ;-)
Vaše připomínky, dotazy:
Veškeré dotazy a přitomínky (nejen) k tomuto fóru směřujte do rubriky
Ostatní služby na KÝBLSoft.cz
nebo přímo mně na
e-mail.