Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
Autor | Správa |
---|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
zdravim, mal by som taky problem:
Mam napisany system posielania sprav medzi uzivatelmi (tie sa rozdeluju medzi prijate a odoslane, tiez admin ma moznost poslat spravu vsetkym v danom systeme).
Problem je mazanie. Pri napisani spravy sa INSERTne (okrem ineho) nove id spravy, meno odosielatela a meno prijemcu. Ak vsak napr. tu spravu chce vymazat prijemca, samozrejme vymaze sa aj odosielatelovi a naopak.
Jednym z rieseni by mohol byt nejaky multi INSERT (kde sa do db vlozi ta ista sprava 2x, v jednej s menom odosielatela a v druhej s menom prijemcu), avsak ked admin posiela spravu vsetkym v systeme a ten system obsahuje vela uzivatelov a pre kazdeho by sa vytvarala ta ista sprava... no neviem.
Ako sa to zvykne riesit?
|
|
Registrovaný: 04.04.07 Prihlásený: 17.07.24 Príspevky: 532 Témy: 35 | 35 Bydlisko: Bratislava |
co sa tyka sprav medzi usermi, stacilo by ti, aby si pri kazdej sprave, odoslanej aj prijatej, definoval este 2 stlpce - ci to precital odosielatel a ci to precital prijemca, nic tazke. admin spravy staci pisat jeden krat do tabulky a potom si vytvoris druhu tabulku napr. message_read, kde si das id spravy, id usera, precitana, vymazana. a ked niekto spravu precita, tak insertnes sem novy riadok. a mozes si riadit ci je precitana alebo aj vymazana.
_________________ CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 | 51 Bydlisko: Bratislava |
nieco podobne, ak nie rovnake, tu uz bolo riesene: http://www.pcforum.sk/post-vp556681.html#556681
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
tu prvu cast chapem, ok (mam tam este stlpce read a new, ale musim pridat napr. del_sender, del_receiver a pri selecte pridat where podmienku, ok). I ked to neriesi vymazanie tej spravy z db (co je uz iba detail).
co sa tyka tych "broadcastovych" sprav od admina, trosku som si to zjednodusil a povedal som si, ze tie spravy bude moct mazat iba admin , ale rovnako to neriesi, ci je sprava precitana alebo nie. Zatial to mam tak, ze ked sa takato sprava posle, INSERTne sa do tabulky sprava s prazdnym stlpcom odosielatela a prijemca si potom SELECTne spravy, kde je v stlpci odosielatel ' '. Takze aj ked vytvorim novu tabulku s id spravou, tak ako mam pridat id_prijemcov?
|
|
Registrovaný: 04.04.07 Prihlásený: 17.07.24 Príspevky: 532 Témy: 35 | 35 Bydlisko: Bratislava |
nechapem co presne chces. ak chces riesit ze ta sprava bude iba pre urceny okruh ludi, tak bude najlepsie kazdeho usera zaradit do nejakej skupiny a pri spravu zapisat pre ktoru skupinu je urcena.
ako som spominal, ked bude ta admin sprava pre vsetkych, tak najprv pozries ci sa nachadza v tabulke message_read id spravy s id prihlaseneho usera, podla toho zobrazis.
_________________ CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX |
|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
ok, tu prvu zalezitost som vyriesil.
K tej druhej. V podstate je jedno, ci sa posiela skupine alebo vsetkym, lebo v stlpci "receiver" nie je konkretny prijemca ale skupina (v mojom pripade prazdna bunka).
Ja prave nechapem tej novovytvorenej tabulke s id spravy, id prijemcu. Cize ak sa posiela "broadcast" sprava, ta sa INSERTne do novej tabulky s id spravy a read=0. Ked si uzivatel spravu precita, INSERTne sa novy riadok s tym id spravy, id prijemcu a read=1? asi tak ako si pisal vyssie
otazka je ako by vyzeral taky SELECT...
|
|
Registrovaný: 04.04.07 Prihlásený: 17.07.24 Príspevky: 532 Témy: 35 | 35 Bydlisko: Bratislava |
ee, takto: mas 2 tabulky - message a message_read. ked admin hodi spravu, tak sa insertne do tabulky message, kde sa iba ulozi sprava do stlpcov ako id, subject, body, moze byt aj active. active bude sluzit na to, ci sa sprava ma zobrazovat alebo nie.
potom ked si user spravu precita, tak insertnes do tabulky message_read id, id spravy a id usera.
potom ked budes robit select sprav pre prihlaseneho, tak z tabulky message, ktoru joines na message:read a pozries, ci si uz user spravu precital. hadam to uz chapes.
_________________ CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX |
|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
teraz je to jasne, dik za tvoj cas
|
|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
zacal som to pisat a prisiel som na to, ze to az take idealne riesenie nie je.
User klikne na spravu a vznika problem, lebo musi nasledovat nejaky SELECT s podmienkou, kde by sa mal vyberat stlpec s id_message (ktory je znamy) ale aj id_message_read (ktory ale vznikne az po INSERTe a user ho nema ako zistit). Ak sa nepouzije select, tak sa bude donekonecna insertovat riadok, ze ta sprava bola precitana. Alebo som prepracovany a rozmyslam zle?
mozno by isiel nejaky multi INSERT, pri novej hromadnej sprave by sa v druhej tabulke vytvorilo tolko riadkov, kolko je uzivatelov a do kazdeho riadku by sa vpisalo meno prijemcu. To ale neviem ako.
|
|
Registrovaný: 04.04.07 Prihlásený: 17.07.24 Príspevky: 532 Témy: 35 | 35 Bydlisko: Bratislava |
nechapem co ti vadi, pretoze mne to takto funguje. ved ked raz insertnes ze to precital, preco by sa to malo dokola robit? a ked chces nahodou zistit ID insertnuteho radku, tak sa to da hned po inserte s mysql_insert_id().
_________________ CPU: AMD Phenom II 940 QUAD X4 BE AM2+, chladic: Arctic Cooling Freezer 64 Pro, RAM: 4GB DDR2 800MHz PC6400, MB: M2N-E SLI, VGA: RX 4870 GAINWARD HD4870 1GB, HDD: WD 1TB, Zdroj: CORSAIR 750W TX |
|
Registrovaný: 13.03.09 Prihlásený: 17.02.21 Príspevky: 11 Témy: 3 | 3 |
ja skor rozmyslam nad tym SELECTom, zatial mi furt zapocitava aj tu adminovsku spravu. Neviem presne ako pisat selecty pri nejakych zavislostiach.
|
|
Stránka: 1 z 1
| [ Príspevkov: 11 ] | |
|