Autor Zpráva
Školník
Profil
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
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.

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:

0