Autor | Zpráva | ||
---|---|---|---|
Školník Profil |
#1 · Zasláno: 4. 12. 2007, 09:32:24
Přicházím na trh s (pro mne) dost složitým příkladem, potřebuji vypisovat kalendář (ve kterém se mohou objevovat i několikadenní překrývané akce). V databázi mám dvě tabulky, udalosti a udalosti2.
Udalosti - id (klíč), datum_zacatek, datum_konec, nazev Udalosti2 - id (klíč), datum, id_udalost (id z tabulky udalosti) Pokud uživatel vloží vícedenní událost (9.-11. 11.), tak se do tabulky udalosti vloži jeden řádek (5,9.11.2007,11.11.2007,nazev) a do tabulky udalosti2 ze vloží 3 řádky (1, 9.11.2007, 5;2, 10.11.2007, 5;3, 11.11.2007, 5). Události se mohou překrývat a já bych z toho rád vytvořil něco takovéhoto. Zkoušel jsem vypisovat záznamy podmínkami, ale nikdy se mi nepodařilo dosáhnout zdárného konce (vždy se mi některé události přesunuly mimo tabulku a rozhodily se datumy). Pokud někdo víte a poradíte, děkuju.. |
||
WertriK Profil |
#2 · Zasláno: 4. 12. 2007, 12:31:34
Dle mě by Výpis vypadal asi nějak takto :
Z tabulky udalosti2 vybereš data; SELECT * FROM udalosti2 AS uda LEFT JOIN udalosti AS ud ON ud.id = uda.id_udalosti WHERE date_format(datum, "%c.%y") = '11.2007' GROUP BY id_udalosti, id ORDER BY datum Podmínka where by měla zajistit aby se ti vypsaly záznamy pro daný měsíc. A samotný výpis se bude skládat ze dvou vnořených cyklů - jeden bude vypisovat řádky druhý sloupce. V tom zanořeném cyklu a) pojedeš od 1 do počtu dnů v měsíci nebo jak chceš ale tak aby jsi z toho byl schopný poskládat datum ($i."11.2007) b) budeš kontrolovat jestli se ti nezměnilo id_udalosti - to by znamenalo že musíš přejít na nový řádek c) budeš kontrolovat zda pro datum které vypisuješ ($i."11.2007) nemáš akci kterou vypisuješ - první cyklus V prvním cyklu vždy jen vypíšeš jméno akce na nový řádek. |
||
Časová prodleva: 16 let
|
0