Mam taki problem mam skrypt, który wyciąga dane, a następnie oblicza przedziały, dla których dana substancja była brana codziennie przykładowo
2017-02-02 - 2017-04-04
Tutaj nie była brana
2018-04-06 - 2018-08-30
No i tak przeszukuje wszystkie daty
I teraz mam problem, że jak przykładowo jakaś substancja obojętnie jaka będzie się dzień zaczynał w roku 2016 i skończy też w 2016 roku to w tym przedziale nie zanotuje brania danych substancji.
I dla nie, których danych jest błąd typu niezdefiniowny offest 0
Daje kod źródłowy
private function rysuj_produkty($daty_produktow,$czy_grupa_substancji = "") {
$wspolne = new \App\Http\Controllers\wspolne();
//licznik
$i = 0;
$j = 0;
//zmienna dla poszczególnych dat
$z = 0;
$k = 0;
$data1 = array();
$suma2 = 0;
//zmienna do określenia czy zakończyliśmy dany wpis
$bool = false;
if (Input::get("godzina_a") != "") $daty_produktow .= " and hour(data) >= " . Input::get("godzina_a") ." order by data";
if (Input::get("godzina_b") != "") $daty_produktow .= " and hour(data) <= " . Input::get("godzina_b") ." order by data";
$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;
$tablica[$i][4] = $data_produktow2->id_produktu;
$daty_wziecia = array();
if ($i > 0 ) {
/obliczanie różnic w datach
$wynik = $wspolne->dateDifference($tablica[$i-1][0] . "-" . $tablica[$i-1][1] . "-" . $tablica[$i-1][2] . " 05:00:00", $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2] . " 05:00:00");
}
else {
$wynik = $wspolne->dateDifference($tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2] . " 05:00:00", $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2] . " 05:00:00");
}
print "<br>";
print $wynik;
print "<br>";
if ($wynik > 1) {
print "<font color=red>" . $tablica[$i][0] . "</font> " . "<font color=red>" . $tablica[$i][1] . "</font> " . "<font color=red>" . $tablica[$i][2] . "</font> ";
if ($bool == false) {
$data1[$z][0] = $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2];
$bool = true;
$suma2 = 0;
$j = 0;
}
else {
if ($j == 0) {
$data1[$z][2] = 0;
}
else {
$data1[$z][2] = $tablica[$i][3] / $j;
}
$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 ) {
print "dddd";
$data1[$z][1] = $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2];
if ($j != 0) {
$data1[$z][2] = $suma2 / $j;
}
}
$j++;
if ($i > 0 and ($tablica[$i][3] != $tablica[$i-1][3] and $wynik > 86400)) {
$data1[$z][0] = $tablica[$i][0] . "-" . $tablica[$i][1] . "-" . $tablica[$i][2];
}
$i++;
}
//var_dump($data1);
foreach ($data1 as $data2) {
print $data2[0] . "-" . $data2[1] . " " . $data2[2] . "<br>";
}
//var_dump($data1);
}
Przepraszam trochę za ten kod, ale nie mogłem prościej napisać.