Lars van der Meer: Durchschnittsberechnung aus Datenbankeinträgen läuft schief

Beitrag lesen

Hallo,

danke für die Antwort!

LIMIT 1 ist aber durchaus beabsichtigt, da ich ja nur den LETZTEN und damit aktuellen (ORDER BY woche DESC) Durchschnittswert ausgeben will... Das müsste meines Erachtens mit meinem Code auch funktionieren; - so werden mit $_POST["wochenstundenzahl"] die Stundenzahlen der aktuellen Woche eingetragen und diese dann zu dem in der Datenbank gespeicherten Datensatz "gesamtstundenanzahl" addiert:

$neue_gesamtstundenanzahl = $dsatz["gesamtstundenanzahl"] + $_POST["wochenstundenanzahl"];

Die Variable $neue_gesamtstundenanzahl wird wiederum als "gesamtstundenzahl" in der Datenbank hinterlegt und bei erneutem Aufrufen des Algorithmus abermals zu NEU eingegebenen Stunden addiert, usw.

Mit $aktuelle_Woche wird dann eben die aktuelle Woche ausgelesen (die via AUTO_INCREMENT automatisch inkrementiert wird), und der Durchschnitt wird dann mit $neuer_durchschnitt = $neue_gesamtstundenanzahl / $aktuelle_Woche; berechnet und auch in die Tabelle eingefügt.


Dies sähe beispielsweise aus wie folgt:

Es werden zwei Datensätze eingetragen:

erste Woche: 25 Wochenstunden, Primärschlüssel: 1 [AUTO_INCREMENT]

$neue_gesamtstundenanzahl = 0 + 25; $aktuelle_Woche = 1; $neuer_durchschnitt = 25 / 1 /* $neuer_durchschnitt SOLLTE ALSO DEN WERT 25 HABEN! */

mysqli_query($con, "INSERT INTO Stundendaten (... durchschnitt) VALUES (... '$neuer_durchschnitt') ");


zweite Woche: 19 Wochenstunden, Primärschlüssel: 2 [AUTO_INCREMENT]

$neue_gesamtstundenanzahl = 25 + 19; $aktuelle_Woche = 2; $neuer_durchschnitt = 44 / 2 /* $neuer_durchschnitt SOLLTE NUN ALSO DEN WERT 22 HABEN! */

mysqli_query($con, "INSERT INTO Stundendaten (... durchschnitt) VALUES (... '$neuer_durchschnitt') ");


...die Datenbank spuckt mir dagegen statt 22 den Wert 12.5 aus. ...Was läuft da falsch?

Hallo Lars van der Meer,

Du holst dir mit LIMIT 1 nur einen Datensatz, deine while-Schleife umfasst also nur einen einzigen Durchlauf.

Ohnehin kannst du das Berechnen des Durchschnittes auch der Datenbank überlassen. SELECT AVG(Spaltenname) ist dein Freund.

Bis demnächst
Matthias

Das Geheimnis des Könnens liegt im Wollen. (Giuseppe Mazzini)