Autor Zpráva
Stomas
Profil
Čau, asi hledám pod špatnými hesly nebo já nevím, ale nemůžu vygooglit, jak by měla vypadat tabulka, když bych chtěl vytvořit na webu komunikační systém. Myslím tím komunikaci mezi uživateli, kteří by si mohli posílat zprávy, něco podobného jako je v *t*r*a*v*i*a*n*u*. Snažil jsem se samozřejmě vymyslet i vlastní systém, ale nevím jak na to tak, aby se při každé nově vytvořené zprávě nevytvářela nová tabulka, napadlo mě i do tabulky vkládat pole, ale bylo by složité je editovat. Nemáte s tím zkušenosti?
Ps. Sorry, jestli by to mělo být spíš v rubrice pro databáze, ale tahla problematika se podle mě hodí i sem :).
Joker
Profil
Na co potřebujete víc než jednu tabulku?

Takové jednoduché zasílání zpráv by mohla být jediná tabulka, sloupce by mohly být:
ID zprávy, od (ID autora zprávy), komu (ID adresáta), datum odeslání, text zprávy, příznak přečteno/nepřečteno.
Stomas
Profil
Já právě chci 1 jedinou tabulku :)... No to je zajímavý, ale jak u toho vyřeším třeba odpovědi, když někdo na zprávu odpoví, tak bych chtěl, aby se zobrazila celá zpráva.
Stomas
Profil
Mě tak napadá, že pokud tady na fóru se nezakládá s každým tématem nová tabulka, tak phpbb bude mít dělaný tabulky tak nějak jak bych potřeboval.
Alphard
Profil
Stomas:
že pokud tady na fóru se nezakládá s každým tématem nová tabulka
V žádném případě, to by nám hosting poděkoval :-)
Tady je jedna tabulka minibb_topics pro vlákno a druhá minibb_posts pro příspěvky v něm. Kategorie jsou v minibb_forums.
Stomas
Profil
Ja si to myslel :)... a jak tedy resit tento problem? jak ma vypadat tema v 1 radku se vsemi prispevky?
Alphard
Profil
Stomas:
Zatím jste nenapsal, jakou máte představu o struktuře komunikačního systému. Ne všichni znají Travian. Nemají to tam stylem, že se původní zpráva do odpovědi kopíruje? Pak viz [#2] Joker, jen bych k tomu dal ještě příznak smazání.
Joker
Profil
Stomas:
Já právě chci 1 jedinou tabulku :)
A my potřebujeme vědět v čem přesně je problém, že to nejde ;-)

ale jak u toho vyřeším třeba odpovědi
To záleží na požadované funkčnosti.
Jedna cesta je posílat text původní zprávy normálně v textu odpovědi, jako se to dělá třeba u e-mailů.
No anebo přidat do tabulky sloupec s ID zprávy, na kterou se reaguje.

pokud tady na fóru se nezakládá s každým tématem nová tabulka, tak phpbb bude mít dělaný tabulky tak nějak jak bych potřeboval.
Za prvé, aplikace obvykle dělají jen operace se záznamy v tabulkách, tj. s řádky. Cokoliv jiného by mělo být zvláštní případ (například instalace, aktualizace a podobně).
Za druhé, tohle je miniBB, ne phpBB... a tohle fórum neumožňuje posílat zprávy přímo mezi uživateli.

Pro zajímavost, mám tu starou databázi z phpBB 2, kde si uživatelé mohou posílat zprávy (soukromé zprávy) a tabulka pro soukromé zprávy obsahuje tohle:
- ID zprávy
- typ (to přesně nevím k čemu je)
- předmět zprávy
- od (autor)
- pro (adresát)
- datum
- IP adresa odesilatele
- příznak Povolit bbcode
- příznak Povolit HTML
- příznak Povolit smajlíky
- příznak Připojit podpis

...v phpBB 2 pokud byla reakce na zprávu, text původní zprávy se vložil do nové zprávy ve značce [quote]
Stomas
Profil
jj, chapete dobre... prispevky jsou oddeleny carou s datem a casem... co je to quote?
Alphard
Profil
Stomas:
prispevky jsou oddeleny carou s datem a casem
Takže viz Joker.

co je to quote?
Značka pro citaci. Může se zobrazit třeba kurzívou.
Stomas
Profil
Alphard, Joker:
Ok, díky moc :)... jen pro zajímavost, když bych chtěl jednotlivé příspěvky v tom řádku editovat, tak jako je to tady, tak by to vypadalo jak :)?
Alphard
Profil
Stomas:
tak jako je to tady
Viz [#5] Alphard
Každý příspěvěk je jako samostatný záznam v tabulce a všechny příspěvky k jednomu vláknu se vážou ke společnému záznamu vlákna.

Další možnost, která se mi docela líbí. Podívejte se až na komentáře, článek jsem vybral náhodně (jen jsem zrovna nenašel žádný, kde by komentáře nebyly uzavřeny).
Stomas
Profil
Alphard:
Každý příspěvěk je jako samostatný záznam v tabulce a všechny příspěvky k jednomu vláknu se vážou ke společnému záznamu vlákna.
To by ale znamenalo, že každé téma má vlastní tabulku, takže tomu nerozumím :(
Na to druhý se hned podívám ;)
Alphard
Profil
Stomas:
To by ale znamenalo, že každé téma má vlastní tabulku, takže tomu nerozumím :(
Ne, to jste špatně pochopil, jsou jenom 2 tabulky.
Možná si nastudujte databázovou terminologii.
Databáze obsahuje tabulky a jednotlivým řádkům v tabulce se říká záznamy.
Stomas
Profil
Alphard:
Databáze obsahuje tabulky a jednotlivým řádkům v tabulce se říká záznamy.
JJ, to vím a proto to nechápu, když budu do tabulky s každým příspěvkem vkládat nový řádek, tak jejich systém musí být ale složitější, než mi ukazoval Joker, protože nějak se musí odlišit, jestli řádek patří do konverzace mezi uživatelem A a B v určitém tématu a nebo C a D v nějakém jiném tématu. Jak by tedy vypadaly vlákna?
Tou další možností myslíš odkazovaní? např: [15] Borek?
Alphard
Profil
Stomas:
Tou další možností myslíš odkazovaní? např: [15] Borek?
Především. U diskuse mezi dvěma lidmi možná ale není potřeba to více komplikovat.

když budu do tabulky s každým příspěvkem vkládat nový řádek, tak jejich systém musí být ale složitější, než mi ukazoval Joker, protože nějak se musí odlišit, jestli řádek patří do konverzace mezi uživatelem A a B
Ano, to je ta druhá verze se 2 tabulkami, píši to asi po třetí. Viz [#12], „a všechny příspěvky k jednomu vláknu se vážou ke společnému záznamu vlákna (v té druhé tabulce)“.

Přesný návrh tabulek vám napsat nemůžu, nevím, co přesně od toho očekáváte.
Joker
Profil
Stomas:
nějak se musí odlišit, jestli řádek patří do konverzace mezi uživatelem A a B v určitém tématu a nebo C a D v nějakém jiném tématu
Kdo s kým vede konverzaci tam přece máte.
Příchozí zprávy daného uživatele jsou SELECT z tabulky zpráv, kde sloupec komu je daný uživatel.
Odchozí zprávy daného uživatele jsou SELECT z tabulky zpráv, kde sloupec od je daný uživatel.
A v jakém tématu a jiném tématu? Pro zasílání zpráv mezi dvěma uživateli žádná témata nejsou potřeba.

V první řadě si tedy ujasněme, jestli chcete dělat zasílání zpráv mezi dvěma uživateli (tj. něco jako e-mail nebo soukromé zprávy), nebo diskusní fórum s vlákny a tak vůbec.

Pokud jde o vlákna konverzace, jednoduchou metodu jsem naznačil už výše s tím sloupcem- ID zprávy na kterou se reaguje. Pro vlákna by to ale bylo lepší nějak takhle:
Přidal by se sloupec ID vlákna, kde
- Pokud zpráva nereaguje na žádnou jinou (tj. potenciálně zakládá nové vlákno), bylo by ID vlákna = ID zprávy
- Pokud zpráva reaguje na jinou zprávu, bylo by ID vlákna = ID vlákna té zprávy na kterou reaguje (Ve výsledku by tedy všechny zprávy v jednom vlákně měly stejné ID vlákna, a sice ID zprávy, která vlákno založila)
Zobrazení celého vlákna by pak bylo: SELECT z tabulky zpráv, kde ID vlákna je stejné jako ID vlákna dané zprávy, seřadit vzestupně podle času odeslání.
Stomas
Profil
Alphard, Joker:
Znovu jsme si to pročetl a už to chápu :), sorry za nechápavost xD a moc díky

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: