lostyazilim
tr.link

Php mysql aylık ve yıllık ödeme tablosu oluşturma

4 Mesajlar 1.704 Okunma
acebozum
tr.link

sarpcore sarpcore WM Aracı Kullanıcı
  • Ü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.
 

 

elektronikssl
webimgo

hsntngr hsntngr Kontör at Kullanıcı
  • Ü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
 

 

sarpcore sarpcore WM Aracı Kullanıcı
  • Ü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)
sorunda orada zaten.nasıl bir mysql de tablo olusturup bunu nasıl web arayüzünde yetkili kişi tarafından doldurulacak bir sekle sokacam orada takılıyorum.

şöyle bir sey yaptım ama doğrumu bilmiyorum.



bu boyle aralıga kadar gidecek.
aidat id yanında kulanıcı id de ekledim oyle mantık yuruttum artık dogrumu değilmi emin olamadım.

birde su sekidle ayrı bir kullanici tablom var.



bunların girdisinide bu arayüzle yapmayı dusunuyorum.ne kadar dogru bilmiyorum.



form içersinde tablo olusturdum yukarıdaki resimdeki gibi.form post ile gidiyor.
inputların adını aidat_ocak aidat_subat gibi yazdım.submit ediyor.submit name aidatguncelle.
burada post islem.php gonderiyorum.

orada update işlemi yapıyorum.
 

 

SancarSaran SancarSaran WM Aracı Kullanıcı
  • Ü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.
sarpcore kbc

kişi bu mesajı beğendi.

wmaraci
wmaraci
wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al