$array = []; // tüm konular
$sabit = array_filter($array, function($value, $key){
return $value['sabit'] == 1;
},ARRAY_FILTER_USE_BOTH);
print_r($sabit);
function calculate(string $start, int $count, int $time, array & $k): string
{
$to = $count * $time;
$workingDays = [1, 2, 3, 4, 5];
$from = new DateTime($start);
$interval = new DateInterval("PT1S");
$r = ($to * 10) + 172800;
$periods = new DatePeriod($from, $interval, $r);
$sec = 0;
$x = -1;
$z = 0;
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$h = intval($period->format('H'));
$m = intval($period->format('i'));
if($period->format('N') != $x){
$x = $period->format('N');
if($z > 0){
array_push($k, $count - $z);
$z = 0;
}
}
if($sec >= $to){
return $period->format('Y-m-d H:i:s');
break;
}
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
if($sec % $time == 0){
$z++;
}
}
}
function calculate(string $start, int $count, int $time, array & $k): string
{
$to = $count * $time;
$workingDays = [1, 2, 3, 4, 5];
$from = new DateTime($start);
$interval = new DateInterval("PT1S");
$r = ($to * 10) + 172800;
$periods = new DatePeriod($from, $interval, $r);
$sec = 0;
$x = -1;
$z = $count;
$f = new DateTime($start);
foreach ($periods as $period) {
if (!in_array($period->format('N'), $workingDays)) continue;
$h = intval($period->format('H'));
$m = intval($period->format('i'));
if($period->format('N') != $x){
$e = new DateTime($period->format('Y-m-d')." 17:30:00");
$diff = $e->getTimestamp() - $f->getTimestamp();
$d = $e->modify('+1 days');
if (!in_array($d->format('N'), $workingDays)){
$d = $d->modify('+2 days');
}
$f = new DateTime($d->format('Y-m-d')." 07:15:00");
$x = $period->format('N');
$z -= ($diff / $time);
if($z > 0){
array_push($k, $z);
}
}
if($sec >= $to){
return $period->format('Y-m-d H:i:s');
break;
}
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
}
}
$baslangic_tarihi = "2021-12-01 08:00:00";
$adet = 360;
$sure = 100;
$kalan = [];
echo calculate($baslangic_tarihi, $adet, $sure, $kalan)."<br>";
print_r($kalan);
/**
* 2021-12-02 09:00:00
* Array ( [0] => 18 )
*/
burada kalanları array olarak alabilirsin.
if(($h >= 7 && $h <= 9)){
if($h == 7 && $m < 15){
continue;
} else if($h == 9 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h <= 12)){
if($h == 9 && $m < 45){
continue;
} else if($h == 12 && $m >= 15){
continue;
} else {
$sec++;
}
} else if(($h >= 13 && $h <= 15)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h <= 17)){
if($h == 15 && $m >= 30 && $m < 45){
continue;
} else if($h == 17 && $m >= 30){
continue;
} else {
$sec++;
}
}
$r = ($to * 10) + 172800; buradaki 172800 2günün sn olarak karşılığı araya cumartesi pazar tatili girerse foreach() döngüsü durmasın diye.
şuan bunu çok açıklayamadım biliyorum ama nasıl açıklayacağımıda bilemedim.
Cumartesi, Pazar ve molalardan dolayı iş süresinden fazla değer girmek gerekiyordu bu yüzden öyle bişey yaptım.
Ek mola yazmışsın o kısmı tam olarak anlamadım şuan yazdığın molaları zaten hesaplıyor.
Örnek:
10(600dk) saatlik bir iş var diyelim saat 8 de başlıyor.
Saat 8den 17:30 a kadar toplamda 495dk çalışma saati var(molalar çıkartılınca) 600-495 = 105dk
ertesi gün 7:15 te başlayıp 105 dk 09:00 da iş bitiyor.
// 36000 sn = 10saat
echo calculate("2021-12-01 08:00:00", 36000); // 2021-12-02 09:00:00
böyle denermisin sanki bu sefer oldu gibi
if(($h >= 7 && $h < 9)){
if($h == 7 && $m < 15){
continue;
} else {
$sec++;
}
} else if(($h >= 9 && $h < 12)){
if($h == 9 && $m < 15){
continue;
} else {
$sec++;
}
} else if(($h >= 12 && $h <= 15)){
if($h == 12 && $m < 45){
continue;
} else if($h == 15 && $m > 15 && $m < 30){
continue;
} else {
$sec++;
}
} else if(($h >= 15 && $h < 17)){
if($h == 15 && $m > 15 && $m < 30){
continue;
} else {
$sec++;
}
}
if kısmını bu şekilde düzenle
if((($h >= 7 && $m >= 15) || ($h <= 8 && $m <= 59)) || // 07:15-09:00
(($h >= 9 && $m >= 15) || ($h <= 11 && $m <= 59)) || // 09:15-12:00
(($h >= 12 && $m >= 45) || ($h <= 15 && $m <= 14)) || // 12:45-15:15
(($h >= 15 && $m >= 30) || ($h <= 16 && $m <= 59))){ // 15:30-17:00
$sec++;
}
başlangıç tarihi ve iş için gereken süreyi saniye olarak girmen yeterli
$baslangic_tarihi = "2021-12-01 07:15:00";
$adet = 130;
echo calculate($baslangic_tarihi, $adet * 100); // bu şekilde kullanabilirsin.
Chrome da DevTools(F12 veya sağ tık incele) açıp > Network sekmesinde Diseable cache diye birşey var onu işaretlersen. DevTools açık olduğu sürece cache kullanmaz.
Veya css dosyanı dahil ederken sonuna parametre ekleyerek yapabilirsin.
<link rel="stylesheet" href="style.css?v=<?php echo time()?>">
bu yukarıdakini sadece localde yap.Diğer türlü tüm kullanıcılar her siteye girişinde css i tekrar tekrar yüklemek zorunda kalırlar.
Hostta echo time() fonksiyonu kullanmak yerine elle her değişiklikte sayıyı 1 arttırarak yapabilirsin.
https://getbootstrap.com/docs/4.1/components/modal/#live-demo Bunu soruyorsan adı modal
Edit: yeni fark ettim içerisindeki kart seçme olayının adı captcha