если вы ничего не поняли из вышенаписаного, постарайтесь найти себя в другой области либо не беритесь за сложные задачи и ждите пять лет и более лет пока не поймете что здесь написано
если поняли
граф:
а как так ему объяснить?
до цикла объявляете переменную с пустым значением. в цикле сравниваете эту переменную со значением ид_месяца
иф(переменная соответствует ид_месяца){
все еще тотже месяц
выполняете блок для текущего месяца
}
елс{
начался новый месяц.
выполняете блок для инициализации нового месяца
и выравниваете значения переменной для проверки
}
под циклом в данном случае понимается цикл вытаскивающий построчно записи из бд