Spielerstatistik im Je-Satz-Modus: jeder Satz zaehlt wie ein Spiel

Der STFV will in der Spielerstatistik jeden Satz als Spiel gezaehlt sehen.
spielerstatistikAktualisieren() holt dafuer im Veranstaltungs-Zweig
zusaetzlich ergebnis_detailliert und die beiden Wertungs-Spalten (der Join
auf teamspiel_modus existiert schon), bestimmt je Zeile Einzel oder Doppel
wie begegnungenAktualisieren ueber ISNULL(spieler_2_id) und zaehlt bei
Wertung 4 Siege/Unentschieden/Niederlagen und die Satz-Spalten je SATZ aus
runden_detailliert_auswertung — die angezeigte Spielezahl ist s+u+n und
wird damit von selbst zur Satzzahl. spg/spv bleiben die (im 4er-Modus
bereits satzbasierten) Spielpunkte; pg/pv bleiben die Punktesummen, also
Saetze — ihre Einheiten-Beschriftung haengt an punktetyp und bliebe bei
einer Tore-Umwidmung falsch. Ohne gespeicherte Satzergebnisse (App-Meldung
nur mit Satzstand) zaehlt das Spiel wie bisher als EIN Spiel aus dem
Punktevergleich — deterministisch, keine erfundenen Saetze.

Die S/U/N-Zaehlung und die Satz-Spalten laufen jetzt ueber dieselben drei
Zaehler (heim/unentschieden/gast je Zeile): fuer jede Wertung ausser 4
tragen sie exakt die alten 1-aus-3-Werte, das Ergebnis ist wertgleich zum
bisherigen if/else — bewiesen ueber die Messlatte, nicht nur hergeleitet:
11 Modi + 11 Begegnungen unveraendert gespeichert, voller Datenbank-Dump
(784 Zeilen) und Frontend-Dump (26987 Zeilen) vor/nach dem Wechsel — die
EINZIGEN Unterschiede sind die 7 bestenliste_punkte-Zeilen der
Je-Satz-Prueflige G, und dort nur s/u/n und sg/su/sv; spg/spv und pg/pv
jeder Zeile sind unveraendert. Alle sieben Bestands-Bestenlisten
(einschliesslich der Liga 'Mehrere mit Ergebnis je Satz' bei Wertung
Sieg 2/Remis 1, die weiter je SPIEL zaehlt) sind identisch.

Handrechnung dokumentiert an Spieler 115 der Prueflige G: Einzel
'6:4 4:4 2:6 6:3' (2/1/1), Doppel '4:4 4:4 6:2 2:6' (1/2/1), Doppel
'6:4 6:4 0:6 4:6' als Gast (2/0/2), dazu die Fallback-Begegnung ohne
Satzdetails als eine Niederlage (0/0/1): zusammen 5 Siege, 3 Unentschieden,
5 Niederlagen = 13 'Spiele' (Saetze), Spielpunkte 15:15, Punkte 6:6 —
exakt die gespeicherte Zeile.
This commit is contained in:
svennickel
2026-09-09 19:23:31 +02:00
parent 49ce079900
commit 111fdeb306
@@ -6298,7 +6298,8 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea
foreach ($veranstaltungen as $veranstaltung) { foreach ($veranstaltungen as $veranstaltung) {
$query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, heim_team_id, gast_team_id," $query = "SELECT heim_spieler_1_id, heim_spieler_2_id, gast_spieler_1_id, gast_spieler_2_id, heim_team_id, gast_team_id,"
. "\n teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte" . "\n teamspiel_heim_punkte, teamspiel_gast_punkte, teamspiel_heim_spielpunkte, teamspiel_gast_spielpunkte, ergebnis_detailliert,"
. "\n spielpunkte_wertung_einzel, spielpunkte_wertung_doppel"
. "\n FROM #__sportsmanager_begegnung" . "\n FROM #__sportsmanager_begegnung"
. "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id" . "\n LEFT JOIN #__sportsmanager_team ON heim_team_id = #__sportsmanager_team.team_id"
. "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id" . "\n LEFT JOIN #__sportsmanager_teamspiel ON #__sportsmanager_begegnung.begegnung_id = #__sportsmanager_teamspiel.begegnung_id"
@@ -6349,9 +6350,18 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea
$heim_team_id = $begegnung->heim_team_id; $heim_team_id = $begegnung->heim_team_id;
$gast_team_id = $begegnung->gast_team_id; $gast_team_id = $begegnung->gast_team_id;
$ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0); $ergebnis = $heim_punkte > $gast_punkte ? 1 : ($heim_punkte < $gast_punkte ? 2 : 0);
$heim_saetze = $ergebnis == 1 ? 1 : 0; $wertung = $begegnung->heim_spieler_2_id === NULL && $begegnung->gast_spieler_2_id === NULL
$unentschieden_saetze = $ergebnis == 0 ? 1 : 0; ? $begegnung->spielpunkte_wertung_einzel : $begegnung->spielpunkte_wertung_doppel;
$gast_saetze = $ergebnis == 2 ? 1 : 0; if ($wertung == 4 && !empty($begegnung->ergebnis_detailliert)) {
$auswertung = runden_detailliert_auswertung($begegnung->ergebnis_detailliert);
$heim_saetze = $auswertung[1];
$unentschieden_saetze = $auswertung[2];
$gast_saetze = $auswertung[3];
} else {
$heim_saetze = $ergebnis == 1 ? 1 : 0;
$unentschieden_saetze = $ergebnis == 0 ? 1 : 0;
$gast_saetze = $ergebnis == 2 ? 1 : 0;
}
foreach ($beteiligte as $beteiligter) { foreach ($beteiligte as $beteiligter) {
$spieler_id = $beteiligter[0]; $spieler_id = $beteiligter[0];
@@ -6373,12 +6383,9 @@ function spielerstatistikAktualisieren($geaenderte_spielerstatistik_id = 0, $gea
else else
$punkte[$spieler_id]["team_id"] = $gast_team_id; $punkte[$spieler_id]["team_id"] = $gast_team_id;
} }
if (($ergebnis == 1 && $typ == "H") || ($ergebnis == 2 && $typ != "H")) $punkte[$spieler_id]["s"] += $typ == "H" ? $heim_saetze : $gast_saetze;
$punkte[$spieler_id]["s"] += 1; $punkte[$spieler_id]["u"] += $unentschieden_saetze;
else if ($ergebnis != 0) $punkte[$spieler_id]["n"] += $typ != "H" ? $heim_saetze : $gast_saetze;
$punkte[$spieler_id]["n"] += 1;
else
$punkte[$spieler_id]["u"] += 1;
$punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte; $punkte[$spieler_id]["spg"] += $typ == "H" ? $heim_spielpunkte : $gast_spielpunkte;
$punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte; $punkte[$spieler_id]["spv"] += $typ != "H" ? $heim_spielpunkte : $gast_spielpunkte;
$punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze; $punkte[$spieler_id]["sg"] += $typ == "H" ? $heim_saetze : $gast_saetze;