SUM mit Checkbox-Auswahl

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • SUM mit Checkbox-Auswahl

    Hallo Zusammen,

    ich ein Formular, in dem ich mittels Checkboxen (Häkchen setzen vor dem Datensatz) die Datensätze addieren/summieren möchte, aber eben nur die, die ich ausgewählt habe. Wenn ich die Häkchen gesetzt und den Button "cmd_rechnen" drücke, soll das Ergebnis der Addition erstmal einfach ausgeben werden.

    Folgendes habe ich mir bislang überlegt.

    Quellcode

    1. if($_POST["cmd_rechnen"] && $_POST["opt_haken"])
    2. {
    3. $sumsatz=$_POST["opt_haken"];
    4. foreach($sumsatz as $add_id)
    5. {
    6. $gas = mysql_query("SELECT SUM(gas) FROM verbrauch WHERE monat = $add_id");
    7. $strom = mysql_query("SELECT SUM(strom) FROM verbrauch WHERE monat = $add_id");
    8. $wasser = mysql_query("SELECT SUM(wasser) FROM verbrauch WHERE monat = $add_id");
    9. list($antwort) = mysql_fetch_row($gas);
    10. list($antwort2) = mysql_fetch_row($strom);
    11. list($antwort3) = mysql_fetch_row($wasser);
    12. }
    13. echo "Gas: $antwort";
    14. echo "<br>Strom: $antwort2";
    15. echo "<br>Wasser: $antwort3";
    16. }
    Alles anzeigen


    Dabei habe ich aber das Problem, dass bei z.B drei gesetzten Haken, nur jeweils der letzte ausgelesene Wert ausgeben wird...also nicht addiert wird. Ich überschreibe sozusagen jedes Mal die Variable ohne zu addieren. Vielleicht könnt ihr mir helfen, eine Lösung zu finden, wie ich bei dem Schleifendurchlauf den neuen Wert auf den alten addiere.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Billie ()

  • Moin.

    Das Problem ist, dass du nach jedem Schleifendurchlauf die Variable $antwort usw. neu definierst.

    Quellcode

    1. $sumsatz=$_POST["opt_haken"];
    2. $antwort = 0;
    3. $antwort2 = 0;
    4. $antwort3 = 0;
    5. foreach($sumsatz as $add_id)
    6. {
    7. $gas = mysql_query("SELECT SUM(gas) FROM verbrauch WHERE monat = $add_id");
    8. $strom = mysql_query("SELECT SUM(strom) FROM verbrauch WHERE monat = $add_id");
    9. $wasser = mysql_query("SELECT SUM(wasser) FROM verbrauch WHERE monat = $add_id");
    10. list($buf) = mysql_fetch_row($gas);
    11. $antwort += $buf;
    12. list($buf) = mysql_fetch_row($strom);
    13. $antwort2 += $buf;
    14. list($bug) = mysql_fetch_row($wasser);
    15. $antwort3 += $buf;
    16. }
    17. echo "Gas: $antwort";
    18. echo "<br>Strom: $antwort2";
    19. echo "<br>Wasser: $antwort3";
    20. }
    Alles anzeigen



    Okay ist jetzt keine sehr schöne Lösung, doch sollte die erstmal funktionieren.

    MfG
  • Ich wollte jetzt noch einen Button hinzufügen, mit dem ich die Differenz von zwei Datensätze ausrechnen und erstmal wieder einfach ausgeben kann.

    Und zwar hab ich mir das hier überlegt.

    Quellcode

    1. if($_POST["cmd_differenz"] && $_POST["opt_haken"])
    2. {
    3. $dif=$_POST["opt_haken"];
    4. foreach($dif as $differenz_id)
    5. {
    6. $gas = mysql_query("SELECT gas from verbrauch WHERE monat = $differenz_id");
    7. $strom = mysql_query("SELECT strom from verbrauch WHERE monat = $differenz_id");
    8. $wasser = mysql_query("SELECT wasser from verbrauch WHERE monat = $differenz_id");
    9. list($bufgas) = mysql_fetch_row($gas);
    10. list($bufstrom) = mysql_fetch_row($strom);
    11. list($bufwasser) = mysql_fetch_row($wasser);
    12. $difgas = $bufgas - $bufgas //hier will ich den ersten Wert minus den zweiten Wert rechnen, weiß aber nicht, wie ich die Variable ansprechen soll;
    13. $difstrom = $bufstrom - $bufstrom;
    14. $difwasser = $bufwasser - $bufwasser;
    15. echo "Differenz Gas: $difgas";
    16. echo "<br>Differenz Strom: $difstrom";
    17. echo "<br>Differenz Wasser: $difwasser";
    18. }
    19. }
    Alles anzeigen


    Das ist ja nichts anderes, als den einen Wert minus den anderen Wert zu rechnen. Auch hier habe ich das Problem, dass ich mit dem zweiten ausgelesenen Wert den ersten Wert in der Variable überschreibe und somit als Ergebnis immer Null bekomme. Könnt mir helfen, wie man ersten Wert minus den zweiten Wert rechnet?
  • Billie schrieb:

    Ich hab da 3x drüber gelesen und den Fehler nicht gesehen :pinch:

    Meine Empfehlung dazu. Bei der Entwicklung immer mit error_reporting(E_ALL) arbeiten.

    ansonsten...
    neuen wert erfahren - alten wert vergleichen - neuen wert sichern...

    Quellcode

    1. list($gas) = mysql_fetch_row($gas);
    2. list($strom) = mysql_fetch_row($strom);
    3. list($wasser) = mysql_fetch_row($wasser);
    4. $difgas = $gas - $bufgas;
    5. $difstrom = $strom - $bufstrom;
    6. $difwasser = $wasser - $bufwasser;
    7. $bufgas = $gas;
    8. $bufgas = $strom;
    9. $bufwasser = $wasser;
    Alles anzeigen


    Gruß
  • Danke d0nut :)

    Wieder was gelernt, hatte noch das Problem, dass nicht nur das Endergebnis ausgegeben wurde, sondern auch die ersten ausgelesenen Werte...lag jedoch daran, dass ich die Ausgabe in der Schleife eingebaut hatte, außerhalb der foreach Schleife wird nur das richtige Ergebnis ausgegeben.

    Danke nochmal...
  • d0nut schrieb:

    Billie schrieb:

    Ich hab da 3x drüber gelesen und den Fehler nicht gesehen :pinch:

    Meine Empfehlung dazu. Bei der Entwicklung immer mit error_reporting(E_ALL) arbeiten.


    Meine Empfehlung dazu: immer auch E_STRICT aktiviert haben, damit man zum besserem Programmierstil erzogen wird: error_reporting(E_ALL | E_STRICT); (Ab Version 6 ist E_STRICT in E_ALL enthalten, bis dahin sollte man es während der Entwicklung manuell hinzufügen. PS: E_STRICT setzt PHP 5 voraus!).