Je stockerais certainement vos abonnements séparément des informations de vos membres. Non seulement cela vous permettra un enregistrement complet de tous les abonnements, mais cela vous aidera également si vous avez besoin d'abonnements à durée variable. La structure de vos tables pourrait ressembler à ceci :
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Ensuite, vous pouvez utiliser SQL directement pour trouver les abonnements sur le point d'expirer, etc. Donc, pour trouver les abonnements qui expirent dans les sept prochains jours, vous pourriez avoir quelque chose comme
SELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )