Personally...
I would have named your $date variable $day.
mktime does not need to be repeated.
[assuming you renamed $date to $day]
$date = mktime(0,0,0,$month,1,$year)
$daysInMonth = date('t', $date);
$firstDay = date('w', $date);
In the html you have August in plain text... this should perhaps be date('F', $date) or date('F', mktime(0,0,0,$month,1,$year))?
An excellent start though! Looks like it will work great.