Предполагая, что переменные $ year и $ month уже предварительно рассчитаны для отображения календарной сетки, вы получите данные из базы данных примерно так:
$query = <<<EOF
SELECT DAY(startdt) AS day, description
FROM table
WHERE (YEAR(startdt) = $year) AND (MONTH(startdt) = $month)
EOF;
$stmt = mysql_query($query) or die ('Query error: ' . mysql_error());
$events = array();
while($row = mysql_fetch_assoc($stmt)) {
$events[$row['day']][] = $row['description']; // might have multiple events on one day, so store as an array of events
}
Затем при построении календаря проверьте, присутствует ли $ day в массиве $events
и выведите описания, как вы хотите:
for ($day = 1; $day <= 31; $day++) {
if(isset($events[$day])) {
... display event descriptions
}
}
Конечно, если у вас есть события, которые охватывают несколько дней, вам придется изменить вещи, чтобы справиться с этим, но это должно помочь вам начать хотя бы с однодневных событий.