-
Üyelik
02.06.2014
-
Yaş/Cinsiyet
47 / E
-
Meslek
Bilgi İşlem Ssitem Yöneticisi
-
Konum
Antalya
-
Ad Soyad
S** A**
-
Mesajlar
136
-
Beğeniler
24 / 12
-
Ticaret
5, (%100)
Selam arkadaşlar.İşin içinden çıkamadım.Bu muhasebe matematik tarzı işlerde beynim duruyor resmen.Eğer anlayan varsa yardımcı olursa sevinirim.
Derdim şu:
Kullanıcı tarafında şöyle bir tablo yapıcam.
isim ocak şbt mrt tmz agustos vs vs.....
ahmet 200 200 100
mehmet 100 200 100
ali 200 100 100
gibi olacak.
mysql aidat adında tablo oluşturdum.aidat_id ve kullanıcı_id ekledim ve ayları girdim.
yapmak istedigim kullanıcı tarafında.
yoplam bu ay su kadar para yatırıldı.
2017 de su kadar yatırdıldı.
2018 yılında bu zamana kadar su kadar yatırıldı.
ve tum zamanlar su kadar yatırıldı.
birde şu var her yıl için ayrı bir tablomu oluşturmam lazım?
2017 ,2018,2019 gibi.
çok matematiksel hesaplamalardan analamadığım için soruyu yanlışta soruyor olabilirim.
işin mantığını çözemedim nasıl bir yol izleyecegimi söylemeniz yeterlidir.
teşekkürler.
-
Üyelik
21.09.2016
-
Yaş/Cinsiyet
31 / E
-
Meslek
Full Stack Developer
-
Konum
İstanbul Avrupa
-
Ad Soyad
H** T**
-
Mesajlar
1155
-
Beğeniler
99 / 327
-
Ticaret
3, (%100)
aidat tabonuzun bir ss'sini atar mısınız ? hangi ayda yatırıldığını nasıl kaydediyorsunuz bir bakalım
-
Üyelik
14.01.2018
-
Yaş/Cinsiyet
52 / E
-
Meslek
Programcı
-
Konum
İzmir
-
Ad Soyad
S** S**
-
Mesajlar
319
-
Beğeniler
4 / 111
-
Ticaret
0, (%0)
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.
2 kişi bu mesajı beğendi.