Mam taki problem a mianowicie odejmuje liczbę sekund i zapisuje do wyniku i wynik w przypadku kiedy rekordy dzieli jeden dzień jest 86400, ale kiedy dzieli więcej niż 1 dzień to wynik najczęściej to 2 dni nawet jak różnica to 6 dni no czasami jest dobra wartość daje kod źródłowy.
private function oblicz_srednia_dla_jednego_produktu() {
//$this->oblicz_srednia_substancji();
$wspolne = new \App\Http\Controllers\wspolne();
$id_produkt = DB::select("select id_produktu from spozycie where id = " . Input::get('id') . "");
foreach ($id_produkt as $id_produkt2) {}
$produkt = DB::select("select nazwa,ile_procent,id from produkty where id = '" . $id_produkt2->id_produktu ."'");
foreach ($produkt as $produkt2) {}
$daty_produktow = "select sum(porcja) as porcja,year(data) as data1,month(data) as data2,day(data) as data3,id_produktu,cena from spozycie where id_produktu ='" . $id_produkt2->id_produktu ."' and data < '2018-03-30' ";
$i = 0;
$j = 0;
$z = 0;
$data1 = array();
$suma2 = 0;
$bool = false;
if (Input::get("godzina_a") != "") $daty_produktow .= " and hour(data) >= " . Input::get("godzina_a") ."";
if (Input::get("godzina_b") != "") $daty_produktow .= " and hour(data) <= " . Input::get("godzina_b") ."";
$daty_produktow .= " group by data1,data2,data3 ";
$daty_produktow = DB::select($daty_produktow);
$ile = count($daty_produktow);
$liczba_dni = 0;
foreach ($daty_produktow as $data_produktow2) {
$tablica[$i][0] = $data_produktow2->data1;
$tablica[$i][1] = $data_produktow2->data2;
$tablica[$i][2] = $data_produktow2->data3;
$tablica[$i][3] = $data_produktow2->porcja;
if ($i > 0 ) {
$liczba_sekund2 = $wspolne->oblicz_liczbe_sekund($tablica[$i-1][0] . "-" . $tablica[$i-1][1] . "-" . $tablica[$i-1][2] . " 05:00:00");
}
else {
$liczba_sekund2 = $wspolne->oblicz_liczbe_sekund($tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2] . " 05:00:00");
}
//$d = $wspolne->oblicz_liczbe_sekund(1970 . "-" . '01' . "-" .'10' . " 00:00:00");
//$c = $wspolne->oblicz_liczbe_sekund(1970 . "-" . '01' . "-" .'11' . " 00:00:00");
//print $c - $d;
if ($i == 0) {
}
print "<br>";
$liczba_sekund1 = $wspolne->oblicz_liczbe_sekund($tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2] . " 05:00:00");
$wynik = $liczba_sekund1 - $liczba_sekund2;
print $wynik;
print "<br>";
if ($wynik > 86400) {
$j++;
if ($bool == false) {
$data1[$z][0] = $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2];
$data1[$z][4] = $wynik;
$bool = true;
//print $z . "<br>";
$liczba_dni = round($wynik / 86400);
print "<br>" . $wynik;
$suma2 += $data_produktow2->porcja;
$suma3 = $suma2 / $liczba_dni;
if ($z == 0) {
$data1[$z][2] = $suma3;
}
else {
$data1[$z][2] = $suma3;
}
$suma2 = 0;
}
else {
$data1[$z][1] = $tablica[$i-1][0] . "-" . $tablica[$i-1][1] . "-" . $tablica[$i-1][2];
$bool = false;
}
if ($bool == false) {
$z++;
}
}
if ($ile-1 == $i ) {
$data1[$z][1] = $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2];
}
if ($i > 0 and ($tablica[$i][3] != $tablica[$i-1][3] and $wynik > 86400)) {
//$j = 0;
}
$i++;
}
var_dump($data1);
}