Skrypt php błąd wyciagania niektó©ych danych

Odpowiedz Nowy wątek
2018-07-12 09:39
0

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ć.

Pozostało 580 znaków

2018-07-12 10:33
2

najlepiej jakbyś przemyślał kilka spraw, bo jesteś już 4 lata na forum, a robisz ciągle te same błędy: polskie nazwy zmiennych, funkcji, komentarze, brak spacji po przecinkach, brak camelCase, mieszanie html z php
ja bym wrócił do podstaw i szlifował dobre praktyki http://pl.phptherightway.com


A może, ja chcę używać polskich nazw funkcji i zmiennych i tylko tymczasowo mieszam html i php. - pol90 2018-07-12 10:40

Pozostało 580 znaków

2018-07-12 10:47
0

A może, ja chcę używać polskich nazw funkcji i zmiennych i tylko tymczasowo mieszam html i php.

Tylko, że nazwy typu $data1,$suma2, czy $data_produktow2 zwyczajnie źle się czyta. Przy dużym nagromadzeniu takich rzeczy, tak jak u Ciebie w kodzie, można dostać kociokwiku.

group by data1,data2,data3

W ogóle jakie zapytanie chcesz żeby poleciało do bazy? Grupując do polu typu datetime trzeba wziąć pod uwagę to, że masz tam czas przechowywany co do sekundy (a często milisekundy) i często przez tak wielką dokładność grupowanie nie wychodzi.

edytowany 2x, ostatnio: grzesiek51114, 2018-07-12 10:48
Ale to zapytanie grupuje mi co do dnia bo tam jest przechowywany rok,miesiąc i dzień. - pol90 2018-07-12 11:02

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0