Diskusní fórum v PHP s využitím databáze – úvod
Na předchozí seriál Diskusní fórum v PHP pro každého (bez použití databáze) nyní naváže další seriál: Diskusní fórum v PHP s použitím databáze. Toto diskusní fórum bude mít všechny funkce jako to minulé, a navíc přibude mnoho nových funkcí: zobrazení všech odpovědí najednou, odesílání odpovědí emailem, zobrazení data poslední odpovědi, podpora cookies, registrace uživatelů (včetně uploadu obrázků) atd.
Diskusní fórum a jeho struktura
Nejprve stručně k tomu, co bude naše diskusní fórum umět. Jednotlivá témata, tedy příspěvky na nejvyšší úrovni, budeme vypisovat po určitém počtu (standardně po 20) tak, že budou seřazena podle data poslední odpovědi. U každého tématu bude uvedeno několik údajů, včetně počtu odpovědí. Při výpisu odpovědí si uživatel bude moci vybrat ze dvou způsobů zobrazení. Buď se zobrazí pouze jedna odpověď a pod ní strom s dalšími odpověďmi, nebo všechny odpovědi najednou. Všechny údaje, které bude uživatel zadávat do formulářů, i způsob zobrazení si budeme pamatovat pomocí cookies. Uživatelé si budou moci svoje jméno (přezdívku) zaregistrovat a přidat ke svému jménu ještě malý obrázek.
Diskusní fórum bude tvořeno mnoha soubory – index.php (hlavní stránka – výpis témat), read.php (zobrazení příspěvků), new.php (přidávání příspěvků), form.php (formulář pro přidávání příspěvků), post.php (zpracování příspěvků), reg.php (registrace uživatelů), header.php (standardní hlavička), style.css (kaskádové styly), db.php (připojení k databázi), create_table.php (vytvoření databázových tabulek) a style.php (konfigurace diskusního fóra). V adresáři images budou obrázky uživatelů.
Soubor db.php
Tento soubor bude obsahovat informace o databázi a umožní připojení k databázi.
|
Vytvoření databázových tabulek (create_table.php)
Diskusní fórum bude tvořeno dvěma databázovými tabulkami – phorum a users. Do tabulky phorum se budou ukládat všechny diskusní příspěvky a v tabulce users budou informace o registrovaných uživatelích.
Tabulky si můžete vytvořit pomocí souboru create_table.php.
|
V tabulce phorum bude celkem 9 položek. Položka id bude obsahovat unikátní číslo příspěvku. Tato položka bude zároveň primárním klíčem a pomocí příkazu AUTO_INCREMENT zajistíme automatické navyšování hodnoty v položce id o 1. Další položka thread bude vyjadřovat vztah příspěvku k jiným příspěvkům. Pokud bude její hodnota 0, jedná se o hlavní téma. Pokud bude hodnota např. 15, jedná se o odpověď na příspěvek, který má id 15.
Položka author bude obsahovat autora příspěvku, položka email jeho emailovou adresu. V položce subject bude předmět příspěvku, v položce body text příspěvku, v položce date datum a čas vložení příspěvku a v položce latest datum a čas poslední odpovědi. Položka latest bude vyplněna pouze u témat. U obou posledně jmenovaných položek (date, latest) bude datum a čas vyjádřen jako počet sekund od 1. ledna 1970. A konečně poslední položka reply bude určovat, zda autor příspěvku chce případné odpovědi zasílat na svůj email. Jestliže bude obsahovat hodnotu ‚Y‘, odpověď se pošle. Pokud tam bude ‚N‘, odpověď se nepošle.
|
V tabulce users budou pouze 4 položky. Položka name bude obsahovat jméno uživatele, položka password jeho heslo a položka email jeho emailovou adresu. V položce link bude odkaz na uživatelův obrázek.
Soubor style.php
Tento soubor bude obsahovat základní konfiguraci diskusního fóra. Význam všech proměnných bude podrobně vysvětlen v dalších článcích.
|
Standardní hlavička (header.php)
Proměnná $view vyjadřuje způsob zobrazování odpovědí. Může obsahovat pouze dvě hodnoty – ‚single‘ nebo ‚all‘. ‚Single‘ znamená zobrazování odpovědí jednotlivě a ‚all‘ zobrazování všech odpovědí najednou. Aby si uživatel pokaždé, když navštíví diskusní fórum, nemusel přepínat na svůj oblíbený způsob zobrazení, použijeme cookies. Musíme však brát ohled i na uživatele, kteří mají cookies vypnuté, a proto budeme hodnotu proměnné $view předávat ve všech odkazech.
Pokud se jedná o první načtení a proměnná $view ještě není zinicializována, použijeme hodnotu z cookie s názvem cookie_view. Pokud i poté je hodnota proměnné $view prázdná (uživatel navštívil naše diskusní fórum poprvé nebo má vypnutou podporu cookies), použijeme ‚all‘. Poté pošleme aktuální cookie s platností 1 rok (vyjádřena jako počet sekund od 1. ledna 1970). Funkce Time() vrací počet sekund od 1. ledna 1970, k tomu přičteme 31536000 – počet sekund za 1 rok.
|
Předchozí část snad žádný komentář nepotřebuje. Proměnná $PHP_SELF obsahuje jméno právě prováděného skriptu. Pokud v ní najdeme ‚read.php‘, což je soubor zobrazující příspěvky, vytvoříme odkaz umožňující změnu zobrazení příspěvků.
|
Tímto končí nutný úvod do vytváření diskusního fóra. Příště se dozvíte, jak provést výpis hlavních témat.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
Členská sekce: 4 důvody proč ji mít na svém webu
12. března 2024 -
9 nejzajímavějších doménových koncovek
19. srpna 2024 -
inPage AI: Jak na generování obsahu
18. července 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024
tomas
Srp 25, 2009 v 9:34mam otazocku. Stiahol som kompletny zdrojovy kod tohto diskusneho fora. Subor db.php som musel upravit z dovodu, ze mi tam trebalo aj pass zadat do databazi takto vyzera teraz:
pomocou create_table.php mi bez komplikacii vytvorilo tabulku a databaze, no ked vypisem taky prispevok a dam odoslat nic sa nestane. Vycisti mi bunky ako po tlacidle RESET ale novu temu neprida. Ani do databazy. To iste robi aj pri registracii, nic nevypise nic neprida. Neviete co moze byt, nic ine okrem db.php som este nezmenil.
tomas
Srp 25, 2009 v 9:36php
$server = „localhost“;
$user = „root“;
$heslo = „bdtbdt“;
$name = „phorum“;
@MySQL_Connect($server, $user, $heslo) or die(‚Nepodařilo se připojit k MySQL databázi‘); // připojení k databázi
@MySQL_Select_DB($name) or die(‚Nepodařila se otevřít databáze.‘);
Irbiso
Bře 20, 2010 v 9:26Podívej se na datum vytvoření.“16. 10. 2001″ Je to psané v již nepodporované verzi PHP!
ssda
Lis 9, 2010 v 15:02$server = „localhost“;
$user = „root“;
$heslo = „bdtbdt“;
$name = „phorum“;
edgebracarpew
Kvě 4, 2012 v 18:21Лаки и краски „Senta”.Весь спектр продукции „Senta”,фирмы „Sentapol”(Турция).
Полиуретановый яхтный лак, паркетный лак, нитро-целлулоидный лак-заполнитель, алкидные эмали, антикоррозийная краска
Agostedge
Led 7, 2013 v 4:40锘縋eople everywhere over the today climate fat looking at a number of different ways to try and save your hard earned money and electricity. They search as well as for lighting in order for you that do not among the more consume less an outlet,but also save their your hard earned money Dimmable LED light – weight bulbs pounds going to be the many of the new major the most recent breakthrough as part of your lighting industry. The dimmable led light bulbs have taken the place relating to ancient fashioned light – weight bulbs all of these consume significant energy Dimmable LED light and portable bulbs can be the case that can be used all over the any fitting. They can be the case which can be used all over the both the domestic and commercial ambitions Dimmable LED light – weight bulbs bear in mind ach and every homemade solar power system efficient lightweight, durable and a considerable ways lasting that can also be the
fdozmjmnhbn
Led 15, 2013 v 14:50Welcome To Buy Our Renow
Anonym
Dub 2, 2014 v 15:13fda