Ik denk dat je het moet omdraaien:
Eerst haal je alle "gebeurtenissen" in een maand op en sla je deze op in een array.
Bij het afdrukken van de kalender kijk je op elke dag of er een entry in dat array is voor die dag.
Je kunt dus waarschijnlijk niet met een while-lus met queryresultaten de kalender opbouwen...