Hallo,
ich habe folgendes Problem:
Ich möchte die über einen Zeitraum von mehreren Wochen verteilten durchschnittlichen wöchentlichen Arbeitsstunden in eine Datenbanktabelle schreiben und auch wieder auslesen lassen, und muss da irgendwo einen groben Denkfehler eingebaut haben...
So habe ich für die erste Woche 25 Wochenstunden, für die zweite Woche 19 Wochenstunden eingetragen, was ja eigentlich eine durchschnittliche Wochenstundenanzahl von 22 ergeben müsste... die Datenbank spuckt mir aber 12.5 Stunden aus...?
Ich habe versucht, hier allen das Leben ein wenig leichter zu machen, und den nachfolgenden Code entsprechend auf das [wie ich glaube] Problem reduziert... ...sollte ich dadurch wichtige Informationen vorenthalten, bitte um Hinweis!
Danke für ernstgemeinte Ratschläge.
LG, Lars.
Zum Code:
eingabe.php sieht aus wie folgt:
...IN DER DATENBANK:
Die Tabelle "Stundendaten" enthält als Primärschlüssel "woche", diese ist vom Typ bigint AUTO_INCREMENT - der Primärschlüssel ist also als einfache Durchnummerierung ausgeführt. "wochenstundenanzahl", "gesamtstundenanzahl" sind vom Typ int, "durchschnitt" vom Typ double.
...PHP:
$con = mysqli_connect(...);
$res = mysqli_query($con, "SELECT woche, gesamtstundenanzahl FROM Stundendaten ORDER BY woche DESC LIMIT 1");
while ($dsatz = mysqli_fetch_assoc($res)) {
if ($dsatz["woche"] === NULL) {
$dsatz["woche"] = 1;
}
if ($dsatz["gesamtstundenanzahl"] === NULL) {
$dsatz["gesamtstundenanzahl"] = 0;
}
$neue_gesamtstundenanzahl = $dsatz["gesamtstundenanzahl"] + $_POST["wochenstundenanzahl"];
$aktuelle_Woche = $dsatz["woche"];
$neuer_durchschnitt = $neue_gesamtstundenanzahl / $aktuelle_Woche;
}
mysqli_query($con, "INSERT INTO Stundendaten (wochenstundenanzahl, gesamtstundenanzahl, durchschnitt) VALUES ('".$_POST['wochenstundenanzahl']."', '$neue_gesamtstundenanzahl', '$neuer_durchschnitt') ");
(die Wochenstundenanzahl wird via Formular <input name="wochenstundenanzahl" type="number" /> gepostet)
auswertung.php sieht aus wie folgt:
$con = mysqli_connect(...);
$durchschnitt = mysqli_query($con, "SELECT woche, durchschnitt FROM Stundendaten ORDER BY woche DESC LIMIT 1");
while($dudsatz = mysqli_fetch_assoc($durchschnitt)) {
if ($dudsatz["woche"] === NULL) {
exit("<p>Es sind noch keine Einträge vorhanden.</p>");
}
echo "<h3>Durchschnittliche Arbeitszeit pro Woche seit Anfang 2016: " . $dudsatz["durchschnitt"] . " Stunden</h3>";
}