Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sumowanie rekordów po zmiennej
Forum PHP.pl > Forum > Przedszkole
arrayy
Skrypt ma za zadanie sumować wpływy i wydatki według poszczególnych miesięcy, korzystając z dwóch tabel. Zauważyłam, że zwraca wartości pomnożone przez jakąś małą liczbę - dla "wpływów" prawdopodobnie zaczyna od liczby niezerowych elementów tabeli i potem, idąc w dół, mnoży wyniki przez coraz mniejsze liczby. Dla "wydatków" podaje zakłamaną wartość tylko dla pierwszego elementu kolumny.

Nie mam już pomysłów co można zmienić, aby zadziałało.

Pozdrawiam i z góry dziękuję!

  1. <?php
  2. $raport = "SELECT month, year, SUM(praca), SUM(praca_inne), SUM(kredyty), SUM(inne), monthh, yearr, SUM(zywnosc), SUM(alkohol), SUM(odziez), SUM(mieszkanie), SUM(odziez), SUM(zdrowie), SUM(odziez), SUM(transport), SUM(lacznosc), SUM(rekreacja), SUM(edukacja), SUM(innee) FROM wplywy LEFT OUTER JOIN wydatki ON month = monthh AND year = yearr GROUP BY month";
  3. $result2 = @mysql_query($raport);
  4.  
  5. if($result2)
  6. {
  7. ?>
  8.  
  9. <table border ="1">
  10. <tr>
  11. <td>
  12. <?php
  13. echo 'miesiąc';
  14. ?>
  15. </td>
  16. <td>
  17. <?php
  18. echo 'rok';
  19. ?>
  20. </td>
  21. <td>
  22. <?php
  23. echo 'wpływy razem';
  24. ?>
  25. </td>
  26. <td>
  27. <?php
  28. echo 'wydatki razem';
  29. ?>
  30. </td>
  31. <td>
  32. <?php
  33. echo 'saldo';
  34. ?>
  35. </td>
  36.  
  37. </tr>
  38.  
  39. <?php
  40. while ($wierszrm = mysql_fetch_assoc($result2))
  41. {
  42. $razemrm = 0;
  43. $raze = 0;
  44. ?>
  45.  
  46. <tr>
  47. <td>
  48. <?php
  49. echo $wierszrm['month'];
  50. ?>
  51. </td>
  52. <td>
  53. <?php
  54. echo $wierszrm['year'];
  55. ?>
  56.  
  57. </td>
  58. <td>
  59. <?php
  60. $razemrm = $razemrm + $wierszrm['SUM(praca)'] + $wierszrm['SUM(praca_inne)'] + $wierszrm['SUM(kredyty)'] + $wierszrm['SUM(inne)'];
  61. echo $razemrm;
  62. ?>
  63. </td>
  64. <td>
  65. <?php
  66. $raze = $raze + $wierszrm['SUM(zywnosc)'] + $wierszrm['SUM(alkohol)'] + $wierszrm['SUM(odziez)'] + $wierszrm['SUM(mieszkanie)'] + $wierszrm['SUM(zdrowie)'] + $wierszrm['SUM(transport)'] + $wierszrm['SUM(lacznosc)'] + $wierszrm['SUM(rekreacja)'] + $wierszrm['SUM(edukacja)'] + $wierszrm['SUM(innee)'];
  67. echo $raze;
  68. ?>
  69. </td>
  70. <td>
  71. <?php
  72. $saldo = 0;
  73. $saldo = $razemrm - $raze;
  74. echo $saldo;
  75. ?>
  76. </td>
  77.  
  78. <?php
  79. }
  80. ?>
  81. </tr>
  82.  
  83. </table>
  84.  
  85. <?php
  86. }
  87. ?>
nospor
w pętli zerujesz za kazdym razem liczby. Nie uwazasz ze to powinno byc przed pętla?
$razemrm = 0;
$raze = 0;

arrayy
Nie. Wykorzystuję za każdym razem tę samą zmienną, dlatego muszę ją zerować w pętli, inaczej zmienna przenosiłaby cały czas wartość z poprzedniego wiersza i dodawała do niej nową, właściwą.
nospor
Albo ty nie zakumałeś co mówię, albo zakumałeś i masz bezsens. winksmiley.jpg

Skoro za kazdym razem ma ona zawierac co innego to po co ją zerujesz?
zamiast zerować rób poprostu:
$razemrm = $wierszrm['SUM(praca)'] + $wierszrm['SUM(praca_inne)'] + $wierszrm['SUM(kredyty)'] + $wierszrm['SUM(inne)'];
I już. Przecież na to samo wyjdzie smile.gif
arrayy
No tak, faktycznie to zerowanie było niepotrzebne i te zmienne liczą się dobrze również w podany przez Ciebie sposób smile.gif. Niestety, nie pomogło to na problem główny, ale już udało mi się go rozwiązać - stworzyłam po prostu kolejną tabelę, do której były zapisywane i wpływy i wydatki, wszystko do kupy, w ten sposób uniknęłam tego JOINa, który wszystko psuł. Rozwiązanie mało odkrywcze, ale chociaż efektywne winksmiley.jpg
Pozdrawiam smile.gif
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.