This topic is locked
[SOLVED]

 Different Values when I check more than one boxes and click custom button

4/27/2020 8:44:51 AM
PHPRunner General questions
H
harveyspecter author

Hello, I have a wierd situation..
I have exactly same 3 data in same table. When I select one by one and use the code below with custom button its fine. Its working great.



global $dal;



while ( $data = $button->getNextSelectedRecord() ) {

$muvekkil = $data["alacak_yaralanma_muvekkil"];

$data2 = array();

$data2["muvekkil_isim"] = "$muvekkil";

$rs = DB::Select("muvekkil", $data2);

while( $record = $rs->fetchAssoc() )

{

$dogumtarihi = $record["muvekkil_dogumtarihi"];

$today = date("Y-m-d");

$diff = date_diff(date_create($dogumtarihi), date_create($today));

$yas = $diff->format('%y');

$muvekkilkazatarihigelir = $record["muvekkil_gelir"];

$muvekkilsonbilinengelir = $record["muvekkil_songelir"];

$muvekkilcinsiyet = $record["muvekkil_cinsiyet"];

}

$data3 = array();

$data3["yas"] = "$yas";

if ($muvekkilcinsiyet == 'Erkek'){

$rs2 = DB::Select("aktuer_erkek_mortalite", $data3);

}else if ($muvekkilcinsiyet == 'Kadın'){

$rs2 = DB::Select("aktuer_kadin_mortalite", $data3);

}

while( $record2 = $rs2->fetchAssoc() )

{

$n_degeri = $record2["n_degeri"];

$d_degeri = $record2["d_degeri"];

if ($muvekkilcinsiyet == 'Erkek'){

$n_60 = '438781,571612949';

}else if ($muvekkilcinsiyet == 'Kadın'){

$n_60 = '552856,718396499';

}

$yasamsuresi = $record2["yasam_suresi"];

$toplamyasamsuresi = ($yas + $yasamsuresi);

$roundyasamsuresi = round($toplamyasamsuresi);

}

$rs3 = DB::Select("aktuer_asgari_ucret", "CURRENT_DATE BETWEEN baslangic_tarihi AND bitis_tarihi");

while( $record3 = $rs3->fetchAssoc() )

{

$agiliucret = $record3["asgari_ucret_agili"];

$agisizucret = $record3["asgari_ucret_agisiz"];

}

//Aktif Dönem

$aktif_irat_katsayisi = (($n_degeri - $n_60) / $d_degeri);

if ($muvekkilsonbilinengelir == '0'){

$aktuer_aktif = (($aktif_irat_katsayisi * $agiliucret * 12 * $data["alacak_yaralanma_maluliyet"] * $data["alacak_yaralanma_kusur"]) / 10000);

}else{

$aktuer_aktif = (($aktif_irat_katsayisi * $muvekkilsonbilinengelir * 12 * $data["alacak_yaralanma_maluliyet"] * $data["alacak_yaralanma_kusur"]) / 10000);

}

// Pasif Dönem

$data4 = array();

$data4["yas"] = "$roundyasamsuresi";

if ($muvekkilcinsiyet == 'Erkek'){

$rs4 = DB::Select("aktuer_erkek_mortalite", $data4);

}else if ($muvekkilcinsiyet == 'Kadın'){

$rs4 = DB::Select("aktuer_kadin_mortalite", $data4);

}

while( $record4 = $rs4->fetchAssoc() )

{

$n_degeri_pasif = $record4["n_degeri"];

}

$pasif_irat_katsayisi = (($n_60 - $n_degeri_pasif) / $d_degeri);

$aktuer_pasif = (($pasif_irat_katsayisi * $agisizucret * 12 * $data["alacak_yaralanma_maluliyet"] * $data["alacak_yaralanma_kusur"]) / 10000);
//Aktüer Pasif + Aktif

$aktuer_bilinmeyen_donem = ($aktuer_aktif + $aktuer_pasif);
//Bilinen Dönem

$data5 = array();

$data5["dosya_no"] = $data["alacak_yaralanma_dosyano"];

$rs5 = DB::Select("dosyalar_all", $data5);

while( $record5 = $rs5->fetchAssoc() )

{

$kazatarihi = $record5["kaza_tarihi"];

}
$start = new DateTime($kazatarihi);

$start->modify($data["alacak_yaralanma_gecici"] . ' Day');

$start2 = new DateTime($kazatarihi);

$bugun = date('d.m.Y');

$end = new DateTime($bugun);

$end->modify('+1 day');

$end2 = new DateTime($kazatarihi);

$end2->modify($data["alacak_yaralanma_bakici"] . ' Day');

$interval = DateInterval::createFromDateString('1 day');

$period = new DatePeriod($start, $interval, $end);

$period2 = new DatePeriod($start2, $interval, $start);

$period3 = new DatePeriod($start2, $interval, $end2);



//Bakıcı Gideri Tazminatı

foreach ($period3 as $dt3) {

$hesapgunubakici = $dt3->format("Y-m-d");

$rs8 = DB::Select("aktuer_asgari_ucret", "'$hesapgunubakici' BETWEEN baslangic_tarihi AND bitis_tarihi");

while( $record8 = $rs8->fetchAssoc() )

{

$agisizucretbakici = $record8["asgari_ucret_agisiz"];

}

$agisizucretbakicihesabi = (($data["alacak_yaralanma_kusur"] * $agisizucretbakici) / 3000);

$agisizucretbakicitoplam += $agisizucretbakicihesabi;

}
//Gecici iş göremezlik süresi boyunca bilinen

foreach ($period2 as $dt2) {

$hesapgunugecici = $dt2->format("Y-m-d");

$rs7 = DB::Select("aktuer_asgari_ucret", "'$hesapgunugecici' BETWEEN baslangic_tarihi AND bitis_tarihi");

while( $record7 = $rs7->fetchAssoc() )

{

$agiliucretbilinengecici = $record7["asgari_ucret_agili"];

}

if ($muvekkilkazatarihigelir == '0'){

$agiliucretbilinengunlukgecici = (($data["alacak_yaralanma_kusur"] * $agiliucretbilinengecici) / 3000);

}else{

$agiliucretbilinengunlukgecici = (($data["alacak_yaralanma_kusur"] * $muvekkilkazatarihigelir) / 3000);

}

$agiliucretbilinengunlukgecicitoplam += $agiliucretbilinengunlukgecici;

}
//Gecici sonrası bilinen dönem

foreach ($period as $dt) {

$hesapgunukalici = $dt->format("Y-m-d");

$rs6 = DB::Select("aktuer_asgari_ucret", "'$hesapgunukalici' BETWEEN baslangic_tarihi AND bitis_tarihi");

while( $record6 = $rs6->fetchAssoc() )

{

$agiliucretbilinenkalici = $record6["asgari_ucret_agili"];

}

if ($muvekkilkazatarihigelir == '0'){

$agiliucretbilinengunlukkalici = ($data["alacak_yaralanma_maluliyet"] * $data["alacak_yaralanma_kusur"] * ($agiliucretbilinenkalici / 30) / 10000);

}else{

$agiliucretbilinengunlukkalici = ($data["alacak_yaralanma_maluliyet"] * $data["alacak_yaralanma_kusur"] * ($muvekkilkazatarihigelir / 30) / 10000);

}

$agiliucretbilinengunlukkalicitoplam += $agiliucretbilinengunlukkalici;

}

$aktuer_bilinen_donem = ($agiliucretbilinengunlukgecicitoplam + $agiliucretbilinengunlukkalicitoplam);
$butunaktuertoplam = ($aktuer_bilinmeyen_donem + $aktuer_bilinen_donem);
$geciciduzeltilmis = round($agiliucretbilinengunlukgecicitoplam, 2);

$bilinendonemduzeltilmis = round($agiliucretbilinengunlukkalicitoplam, 2);

$bilinmeyenaktifduzeltilmis = round($aktuer_aktif, 2);

$bilinmeyenpasifduzeltilmis = round($aktuer_pasif, 2);

$butunaktuertoplamduzeltilmis = round($butunaktuertoplam, 2);

$agisizucretbakicitoplamduzeltimis = round($agisizucretbakicitoplam, 2);

$bilinenbilinmeyentoplam = round(($aktuer_pasif + $aktuer_aktif + $agiliucretbilinengunlukkalicitoplam), 2);
$sql = "UPDATE alacak_yaralanma SET alacak_yaralanma_aktuer= 'Bilinen Dönem Hesabı : $bilinendonemduzeltilmis TL

Bilinmeyen Aktif Dönem : $bilinmeyenaktifduzeltilmis TL

Bilinmeyen Pasif Dönem : $bilinmeyenpasifduzeltilmis TL

Sürekli Sakatlık Toplam : $bilinenbilinmeyentoplam TL

Geçiçi İş Göremezlik : $geciciduzeltilmis TL

Bakıcı Gideri Tazminatı : $agisizucretbakicitoplamduzeltimis TL

Bütün Aktüer Toplamı : $butunaktuertoplamduzeltilmis TL' where ID=".$data["ID"];

CustomQuery($sql);

}


But when i select 3 of them. Its giving first data correct, second data (multiply) with 2, and third data (multiply) with 3.
So i get a result like this:
for example: $geciciduzeltilmis is like this:



As you can see its multiplying. But when i select one by one. Works fine.. Wierd for me..
Do you know why??

D
DealerModulesDevClub member 4/27/2020

Should the line:
$agisizucretbakicitoplam += $agisizucretbakicihesabi;
just be
$agisizucretbakicitoplam = $agisizucretbakicihesabi;

H
harveyspecter author 4/27/2020



Should the line:
$agisizucretbakicitoplam += $agisizucretbakicihesabi;
just be
$agisizucretbakicitoplam = $agisizucretbakicihesabi;


It doesnt work. There is a math in there. For example:
$agisizucretbakicihesabi = 69

$agisizucretbakicitoplam = 65+65+65+...+68+68+68+...+69+69
When you just use $agisizucretbakicihesabi it only gives the last one which is 69 in my example.
But yeah I think its summing up all 3 records. Not one by one. How can i solve it?

H
harveyspecter author 4/27/2020

Help needed. Yes, selected records. Thats why its summs up first record and summs up with result.

Is there a way to just work this code for only for every record choosen??

Sergey Kornilov admin 4/28/2020

You posted 150+ lines of the code and expect someone who has no idea what this code fix it for you? I'm sorry, but your expectations are unrealistic. You need to narrow this question down to its smallest form that can be digested and answered.

H
harveyspecter author 4/30/2020



You posted 150+ lines of the code and expect someone who has no idea what this code fix it for you? I'm sorry, but your expectations are unrealistic. You need to narrow this question down to its smallest form that can be digested and answered.


Yes sorry for that. My code summs up all the records selected and paste it to next record too. I think its because of "+=" operator. I need it to reset the result before going to next record. Because if result is 100 in first record it doesnt reset it so next record start from 100. So result is 200. For next record result is 200+100=300. I need it to reset for each record.

H
harveyspecter author 4/30/2020

Solved.
Just use

$x = 0;

before foreach loop.

Example:

$x= 0;

foreach ($y as $z) {

$x += $z;

}