Autor | Zpráva | ||
---|---|---|---|
tomyc Profil * |
#1 · Zasláno: 12. 4. 2013, 11:49:57
Zdravim, chtěl bych na webu zobrazovat novinky a důležité upominky pro registrované uživatele. Potřeboval bych nasměrovat, jak ukladat do databáze. Mám tabulku uživatelů a tabulku upominek. V tabulce upominky vytvorim neco, co se ma všem zobrazit. Kdo si informaci přečte, zaškrtne příště nezobrazovat. Jak do těchto tabulek co nejefektivněji zanést komu se již informace zobrazila a komu ne. Me reseni by bylo ke kazde informaci v tabulce upominky přidat sloupec precteno a do něj ukladat id uživatele s nějakým oddelovacem, který již informaci videl. Nevím ale jestli při vyšším počtu upominek v tabulce nebude dotaz příliš pomalý. Musel bych pokazde projít celou tabulku a vybrat řádky, kde není ID přihlášeného uživatele. Nejedna se o žádný velký web. Max 60 uživatelů. Pokud mate někdo lepsi řešení prosím napiste. Děkuji
|
||
peta Profil |
tab zobrazeno
- typ = 1, 2, 3 (upominka, nove zpravy, ...) (index) - id_typu = id upominky (index) - id_uzivatele (index) SELECT * FROM zobrazeno WHERE typ=1 AND id_uzivatele=5 LIMIT 1 |
||
Sir Tom Profil |
#3 · Zasláno: 12. 4. 2013, 14:30:44
tomyc:
Také zdravím: Takto: tab1: uzivatele id, jmeno, .... tab2: zprava id, obsah, ... tab3: zprava_ma_ctenare id_uzivatel, id_zprava V poslední tabulce budeš mít tedy 2 cizí klíče (jedná se o vazbu M:N). ID uživatele a ID zprávy. Pokud si uživatel 5 přečte zprávu 18, tak se v této tabulce bude vyskytovat řádek s hodnotami 5 | 18. Když si to nepřečte (resp. nedá nezobrazovat zprávu) tak v této tabulce tento řádek nebude. |
||
Časová prodleva: 17 dní
|
|||
tomyc Profil * |
#4 · Zasláno: 29. 4. 2013, 17:22:11
Omlouvám se za opožděnou reakci. Děkuji za obě rady. Jen bych se ještě zeptal, jak co nejefektivněji zpravy pro konkrétního uživatele zobrazit. Jedná se mi o výpis z databáze, nikoliv o začlenění do stránky. Asi je nesmysl procházet pro každý řádek v tabulce zprava celou tabulku zprava_ma_ctenare . Šlo by nějak jednoduše porovnat tabulky zprava_ma_ctenare a zprava se zaměřením na konkrétní ID uživatele a následně vypsat z tabulky zprava pouze zprávy, které nebyly uživatelem přečteny (jejich ID není v tabulce zprava_ma_ctenare pro ID přihlášeného uživatele)? Předem děkuji za radu
|
||
juriad Profil |
#5 · Zasláno: 29. 4. 2013, 17:34:41
SELECT * FROM zprava z WHERE z.id NOT IN (SELECT zc.id_zprava FROM zprava_ma_ctenare zc WHERE zc.id_uzivatel = $uzivatel) voliteně na samý konec přidej seřazení od nejstarších a omezení počtu. ORDER BY z.id ASC LIMIT $pocet |
||
tomyc Profil * |
#6 · Zasláno: 30. 4. 2013, 12:17:34
Vypadá to jednoduše, ale dohromady bych to sám asi nedal :-) Děkuji moc.
|
||
Časová prodleva: 11 let
|
0