Tablo bu olsun

CREATE TABLE IF NOT EXISTS `aidat` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`kullanici_id` int(10) unsigned NOT NULL,
`aidat_id` tinyint(3) unsigned NOT NULL,
`donem` int(12) NOT NULL,
`miktar` int(11) NOT NULL,
`odeme_tarihi` int(12) NOT NULL,
PRIMARY KEY (`id`),
KEY `kullanici_id` (`kullanici_id`,`aidat_id`,`donem`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci AUTO_INCREMENT=1 ;


içine aidatı böyle dolduracaksın

$d1 = time();
$d2 = mktime(0, 0, 0, 12, 31, date('Y',$d1));
$min_date = min($d1, $d2);
$max_date = max($d1, $d2);
$i = 0;
$aidat_id = 1; // var sayalım 1 apartman aidatı olsun;
$kullanici_id =1; //oda yeni kullanici id olsun
while (($min_date = strtotime("+1 MONTH", $min_date)) <= $max_date) {
$donem = strtotime(date('Y-m-',$min_date)."01");
echo date('d.m.Y',$donem)."\n";
$sql = "INSERT INTO aidat values(NULL,".$kullanici_id.",".$aidat_id.",".$donem.",400,0);";
if ($link->query($sql) != TRUE) {

die();
}
}


bu kod çalıştığı andan itibaren yıl sonuna kadar her ay için o kullanıcıya aidat borcu yazar.

Her yıl artık konsoldan bir yerden her kullanıcı için tek tek çalıştıracaksın.


INSERT INTO `aidat` (`id`, `kullanici_id`, `aidat_id`, `donem`, `miktar`, `odeme_tarihi`) VALUES
(1, 1, 1, 1519851600, 400, 0),
(2, 1, 1, 1522530000, 400, 0),
(3, 1, 1, 1525122000, 400, 1525122000),
(4, 1, 1, 1527800400, 400, 0),
(5, 1, 1, 1530392400, 400, 0),
(6, 1, 1, 1533070800, 400, 1530392400),
(7, 1, 1, 1535749200, 400, 0),
(8, 1, 1, 1538341200, 400, 0),
(9, 1, 1, 1541019600, 400, 0),
(10, 1, 1, 1543611600, 400, 0);





SELECT SUM(miktar) AS toplam, FROM_UNIXTIME(odeme_tarihi, '%Y') AS yil
FROM `aidat`
WHERE kullanici_id = 1
AND aidat_id = 1
GROUP BY yil

hepsini yil yil gösterir

toplam yil
3200 1970
800 2018

1970 ler ödenmeyenler.

SELECT SUM(miktar) AS toplam, FROM_UNIXTIME(odeme_tarihi, '%Y') AS yil
FROM `aidat`
WHERE kullanici_id = 1
AND aidat_id = 1
AND donem >= $baslama_tarihi_unix_timestamp
AND donem <= $bitis_tarihi_unix_timestamp
GROUP BY yil



Tabi kasıp kendine göre sağını solunu uyarlaman lazım. lakin temel mantığı bu. bu tablo ile istediğin kadar aidatı istediği kadar zaman için istediği kadar kişiye uygulayabilirsin.

zamanlar unix time stamp bazında bunu kullanmaya alışın. Ayrıca bu yapı gunlük, haftalık vs liğede uygulanabilir.