Ik zou je abonnementen zeker apart van je ledeninfo bewaren. Dit geeft u niet alleen een volledig overzicht van alle abonnementen, maar helpt ook als u abonnementen met variabele lengte nodig heeft. De structuur van uw tabellen kan er ongeveer zo uitzien:
subscriptions
-------------
subscription_id integer
member_id integer
start_date date
end_date date
date_paid datetime
Dan kunt u direct SQL gebruiken om abonnementen te vinden die op het punt staan te verlopen enz. Dus om abonnementen te vinden die binnen de komende zeven dagen verlopen, zou u zoiets kunnen hebben als
SELECT
member_id,
MAX(end_date) as expires_date
FROM
subscriptions
GROUP BY
member_id
HAVING
expires_date < DATE_ADD( CURDATE() INTERVAL 7 DAY )