Положить меню в базу данных в виде структуры:
MENU - таблица с анонсами меню
menu_id - код анонса меню
public_date - дата анонса
DISH - таблица блюд (без привязки к меню)
dish_id - id блюда
title - название блюда
dish_text - текст состава
Таблица, обеспечивающая состав меню из блюд
MENU_CONSIST
cons_id
menu_id
dish_id
position - порядок вывода
Имея такую структуру, можно составить запрос на вывод меню на ближайшие 30 дней:
select *
from menu m
join menu_consist mc on mc.menu_id = m.menu_id
join dish d on d.dish_id = mc.dish_id
where m.public_date >= CURDATE()
and m.public_date <= CURDATE() + INTERVAL 30 DAY