PHP ile işlem önceliği hesaplaması
PHP ile işlem önceliği
Merhaba arkadaşlar,
Oluşturmuş olduğum formda bir adet tutar giriş kısmı bulunmaktadır. Veritabanımda da borçlar adı altında tablom bulunmaktadır ve bu tablonun sütunları ise; borc, odenenTutar ve toplamBorc adı altında bulunmaktadır.
Borçlar tablosunda 3 adet veri girişi bulunmaktadır ve bunların borçları 250, 120 ve 450 tutarındadır.
Ben bu formdaki tutar girişine 260 lira yazdığım zaman borçlar tablosundaki ilk verideki 250TL tutarındaki borcu ödeyecek arta kalan tutar ile de ikinci verideki tutara aktaracak yani kalan 10TL ödeyecek ikinci veriye.
Sadece 250 veya 150 lira yaparsamda ilk veriye ödeme yapacak
Bu işlemi nasıl yapabilirim arkadaşlar, uygulamalı olarak yardımcı olursanı sevinirim.
iyi günler
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (9)
$userId = 1;
$ode = 0;
$a = $db->prepare("SELECT SUM(`borc` - `odenenTutar`) as odenecekTutar FROM `borclar` WHERE `odemeDurumu` != 2 AND `uyeId` = ?");
$a->execute([$userId]);
$userDept = $a->fetch(PDO::FETCH_ASSOC);
$b = $db->prepare("SELECT * FROM `borclar` WHERE `odemeDurumu` != 2 AND `uyeId` = ?");
$b->execute([$userId]);
$depts= $b->fetchAll(PDO::FETCH_ASSOC);
if(isset($userDept["odenecekTutar"])){
echo "Ödenecek tutar: ".$userDept["odenecekTutar"]."₺<br>";
if(isset($_POST["tutar"]) && intval($_POST["tutar"]) > 0){
$ode = intval($_POST["tutar"]);
}
if($ode <= $userDept["odenecekTutar"] && $ode > 0){
echo "<pre>";
foreach($depts as $dept){
$odenecek = $dept["borc"] - $dept["odenenTutar"];
if($ode > 0){
if($ode >= $odenecek){
$durum = 2;
$odenen = $dept["odenenTutar"] + $odenecek;
}else if($ode < $odenecek){
$durum = 1;
$odenen = $dept["odenenTutar"] + $ode;
}else{
$durum = 0;
$odenen = 0;
}
$borc_ode = $db->prepare("REPLACE INTO `borclar` SET `id` = :id, `uyeId` = :uyeId, `borc` = :borc, `odenenTutar` = :odenenTutar, `toplamBorc` = :toplamBorc, `odemeDurumu` = :odemeDurumu, `tarih` = :tarih");
$borc_ode->execute([
":id" => $dept["id"],
":uyeId" => $dept["uyeId"],
":borc" => $dept["borc"],
":odenenTutar" => $odenen,
":toplamBorc" => $dept["toplamBorc"],
":odemeDurumu" => $durum,
":tarih" => $dept["tarih"]
]);
echo "Ödenen: $odenen, ödenecek: $odenecek, durum: $durum, $ode <br>";
print_r($dept);
echo "<br>";
$ode -= $odenecek;
}
}
echo "</pre>";
}
}else {
echo "Kullanıcıya ait borc bulunamadı.<br>";
}
$odenentutar = $_POST["odenentutar"];
$musteriID = $_POST["musteriID"];
$kalan = $odenentutar;
$borclar = $db->query(SELECT ID,borc,odenen FROM borclar WHERE musteriID='{$musteriID}' ORDER BY ID ASC)->fetchAll();
foreach($borclar as $item){
if($kalan>0){
$borcid = $item->ID
$borc = $item->borc;
if($borc<=$kalan){
$odenen = $borc;
$kalan = $kalan - $odenen;
else{
$odenen = $kalan;
$kalan = 0;
}
$update = $db->query("UPDATE borclar SET odenen='{$odenen}' WHERE ID='{$borcid}');
}else{
break;
}
}
@jct toplamBorc kısmı dediğiniz gibi birbirinden çıkarırakta yapılabilir, veritabanında kayıt edeyim demiştim.
Size şöyle anlatayım 3 kalem borcunuz (250-120-450) toplamda 820TL'dir. ödeme yapmaya gidiyorsunuz fakat sizin 820TL'ni yok sadece 300TL'niz var ve 300TL ödeme yapıyorsunuz.
Böylelikle 3 kalem borcunuzdan 1. 250 siliniyor 2.den ise 50TL siliniyor.
Formdaki tutar girişine 300 TL girince bu şekilde düşüşleri php de nasıl yapacağız.
Umarım anlatabilmişimdir.
@konya hocam geri kalan 10TL, 2. kısmındaki 120 TLden düşüş yapacak.
@makifgokce hocam dediğiniz siteye veritabanını yükledim.
veritabanını buraya yükleyerek bizle paylaşsan daha anlaşılır olurdu.