I don't really understand the question. I think the query would just be:
SELECT * FROM products ORDER BY ProductDate
Then just write the month name at the beginning of each month like:
<?php
$lastMonth = "";
?>
<?php
while (!$recordset->atEnd()) {
?>
<?php
if ($lastMonth != $recordset->getColumnVal("ProductMonth")) {
?>
<h2><?php echo($recordset->getColumnVal("ProductMonth")); ?></h2>
<?php
$lastMonth = $recordset->getColumnVal("ProductMonth");
}
?>
<!-- rest of your looped code here -->