Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Obliczenie procent narastająco
Forum PHP.pl > Forum > Przedszkole
marck
Mam duży problem, więc proszę mądre głowy o pomoc. Otóż:

Chcę obliczyć normę przyrostową na każdy dzień, z raportu produkcji.
Pola raportu to:

dataRaportu
idPracownika
idProduktu
ilosc
norma

Każdego dnia pracownik może wytworzyć kilka produktów, każdy ma inną normę, stąd pole norma w którym wyliczam procent dzienny jaki uzyskał. Tworząc wydruk raportu, chciałbym by to wyglądało tak:

data| norma dzienna | norma narastająco

Aktualnie sumuję normę Grupując po dacie co daje mi sumę wykonania % w dniu, ale nie mam pomysłu jak zrobić przyrostowo, bo 2 dnia sumę norm musi dzielić przez 2, 3 przez 3, 4 przez 4. Inkrementuję przez $a więc chciałem to wykorzystać, ale mi coś nie idzie, może ktoś ma jakiś pomysł? Oto przykład:
  1. $operacja=mysql_query("SELECT SUM(ilosc) AS ile, SUM(procN) AS normaS," .
  2. "dataR FROM raport WHERE idPrac='$pracid' GROUP BY dataR");
  3. while($ln=mysql_fetch_array($operacja)){
  4. $dataR=$ln['dataR'];
  5. $ile=$ln['ile'];
  6. $normaS=$ln['normaS'];
  7.  
  8. echo"<tr><td>$a</td><td>$datar</td><td>$ile</td><td>$normaS</td><td>$normaS/$a</td></tr>";
  9. $a++;
  10. }
  11. echo"</table>";

Problem jest w miejscu $normaS(suma norm w dniu)/$a(kolejny wpis w raporcie). Może ktoś ma inny pomysł by się tworzyło to z automatu by było:

1|2009-01-07 |1280szt| 100%w dniu | 100% narast.|
2|2009-01-08 |640szt |50% w dniu | 75% narast. |
3| itd...

Pomożecie?


Żaden Apacz nie wie jak to ugryźć? Zawiodłem się
nospor
Cytat
Żaden Apacz nie wie jak to ugryźć?

Apacz? jak chcesz odpowiedź od apacha to zapytaj go w assemblerze lub jak od innego apacza to zapuść znaki dymne tongue.gif

Za bardzo nie kumam o co ci chodzi, ale wiem jedno, ze to dzielenie w tekscie ci nie wyjdzie. Aby wyswietlić efekt dzielenia to musisz to zrobic tak:
  1. echo"<tr><td>$a</td><td>$datar</td><td>$ile</td><td>$normaS</td><td>".($normaS/$a)."</td></tr>";
marck
O widzisz.. jakaś wskazówka..

Bardzo dziękuję.

Wkradł się mały błąd. Otóż czy jest możliwe, by w zwracanym wyniku można było dynamicznie sumować? Tzn. NormaS- to suma norm z danego dnia, więc w pierwszym wierszu - no problem. Chciałbym, by w drugim wierszu sumował rekord 1+2 czyli coś w stylu: ((NormaS1+normaS2)/$a) - Analogicznie w 3 wierszu - Suma norm z 3 wierszy/$a . Aby obliczyć procent narastająco muszę zsumować normy i podzielić przez ilość dni. Adekwatne do sumowania narastającego. Nie wiem jak to ugryźć i mam zonka, dlatego właśnie napisałem na tym forum. Czasem patrzy się na problem ze złej strony. a punkt widzenia kogoś innego może naprowadzić na rozwiązanie
Derw
Nie wiem czy to o to Ci chodzi ale możesz stworzyć dodatkową zmienną w której będziesz trzymał wynik poprzedniego rekordu i będziesz tylko dodawał kolejne do tego.

  1. $tmp+=$normaS;
  2. echo"<tr><td>$a</td><td>$datar</td><td>$ile</td><td>$normaS</td><td>".($normaS/$a)."</td></tr>";
  3. $a++;


w $tmp jest najpierw normaS1 w drugiej petli już normaS1+normaS2 itd.
kda
Odświeżam temat, czy mógłby ktoś pomóc w rozwiązaniu tego problemu jaki ma @marck , borykam się z identycznym problemem i nie umiem sobie z tym poradzić.
@Marck a może Ty już masz gotowe rozwiązanie więc jak byś mógł podziel się nim
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.