Bir yol buldum ama manuel ve sorunlu çalışacak. bunu bir döngüye sizce nasıl alabilirim.
$gun_sayisi = (($out_date - $in_date) /60/60/24);
echo 'Toplam Gün: '.$gun_sayisi;
echo '<hr>';
$donemsel_fiyat = $db->get_row("select tarih_ucret,id,tarih_bitis from donemsel_fiyatlar where is_id='". $db->escape($is_id)."' and tarih_baslangic>=$in_date and (tarih_bitis>=$out_date or tarih_bitis<$out_date) order by tarih_baslangic asc limit 1");burada şöyle bir algoritma düşündüm. Gün sayısı toplamını buluncaya sql sorgusunu yapması.
Örnegin gün sayısı 5 ilk dönemsel fiyat içerisinde olsa. (varsayalım belirlenmiş 10 günlük dönemsel fiyat içerisinde)
tek sorgu bitecek.
20 gün sayısı oldu diyelim.
Burada
1. dönemsel fiyattan 1 gün. (dönemsel fiyatın son gününe denk geliyor diyelim)
2. dönemsel fiyattan (sonraki dönemsel fiyatın hepsini kapsıyor. 17)
Toplam 18 gün yaptı.
3. dönemsel fiyattan ise ilk 2 günü karşılıyor.
Bu durumda hesap şu şekilde olacak
Fiyat Tablosu:
1. dönem = 30
2. dönem = 40
3. dönem = 50
1*30 = 30
17*40 = 680
2 * 50 = 100
Toplam 850 TL işçinin alacağı çıkıyor.
Buradaki koşulu döngüye sokmak gerekiyor çünkü bu çalışma süresi 1 yılda olabilir.
function tarihbul($baslangic,$bitis) {
$kes1=explode('.',$baslangic);
$kes2=explode('.',$bitis);
$time1=mktime(0,0,0,$kes1[1],$kes1[0],$kes1[2]);
$time2=mktime(0,0,0,$kes2[1],$kes2[0],$kes2[2]);
$total = array();
while($time1<=$time2) {
$x=date('d.m.Y', ($time1));
$xy = strtotime($x);
$getir = mysql_query("select * from donemsel_fiyatlar where tarih_baslangic<$xy and tarih_bitis>$xy");
$row = mysql_fetch_array($getir);
$ucret = $row["tarih_ucret"];
$total[] = $ucret;
$time1=$time1+86400;
}
return array_sum($total);
}
$baslangic = "31.03.2014";
$bitis = "29.05.2014";
echo tarihbul($baslangic,$bitis);
// Çıktısı 10150İş görürmü ?