Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Obliczenie procent narastająco
marck
post 2.09.2009, 22:11:34
Post #1





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 27.05.2008

Ostrzeżenie: (0%)
-----


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ę
Go to the top of the page
+Quote Post
nospor
post 2.09.2009, 22:14:39
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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>";


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
marck
post 2.09.2009, 22:22:01
Post #3





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 27.05.2008

Ostrzeżenie: (0%)
-----


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

Ten post edytował marck 2.09.2009, 22:31:18
Go to the top of the page
+Quote Post
Derw
post 3.09.2009, 13:44:07
Post #4





Grupa: Zarejestrowani
Postów: 18
Pomógł: 1
Dołączył: 19.03.2009

Ostrzeżenie: (0%)
-----


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.

Ten post edytował Derw 3.09.2009, 13:44:57
Go to the top of the page
+Quote Post
kda
post 2.03.2012, 13:50:38
Post #5





Grupa: Zarejestrowani
Postów: 75
Pomógł: 2
Dołączył: 29.07.2009

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 18:49