Ticker: Tore zeigen, und ein 0:0-Satzstand ist ein Ergebnis

Meldung von Sven (DTFB-IT): "Im Live-Ticker werden Tore nicht gezeigt."
Dazu gemessen: view_ticker.php enthielt keinen einzigen Zugriff auf die
Tore-Spalten, und die Spielzeile blendete das Ergebnis aus, sobald der
Satzstand 0:0 war ("5:5 5:5" -> leere Zelle, obwohl eingetragen).

- Spielzeile im Matchdetail: das Ergebnis erscheint auch bei Satzstand 0:0,
  sofern ein Satzergebnis vorliegt (ergebnis_detailliert); darunter stehen
  die Tore des Spiels aus teamspiel_heim_tore/teamspiel_gast_tore, klein und
  nur, wenn sie bekannt sind und nicht ohnehin dem Punktestand entsprechen
  (bei punktetyp 0 sind Punkte = Tore, dort bleibt die Zeile unveraendert).
- Matchdetail-Kopf: die Gesamttore der Begegnung stehen in der Datumszeile
  ("... - Tore 47:42"), gleiche Bekanntheits-Regel; der feste 78px-Zaehler
  (resultat_holder) bleibt unangetastet und zeigt statt "--|--" den Stand,
  sobald ein Ergebnis vorliegt (heim_tore bekannt), auch bei Spielpunkten 0:0
  (Wertung "je Satz, Sieg 1": alle Spiele remis).
- Status einer Begegnung (finished/upcoming) in Liste und Turnierbaum:
  bekannte Tore zaehlen als beendet, nicht nur Spielpunkte != 0.
- Die Ticker-Abfragen (Liste und Timestamp-Erkennung) behandeln eine
  Begegnung mit Punkten 0:0, aber bekannten Toren als ausgetragen -- sie
  erscheint unter den beendeten Spielen und sortiert sich dort ein, statt
  als "anstehend" zu gelten. Fuer Bestandsdaten ohne Tore-Spaltenwerte
  (NULL) aendert sich an Filterung und Sortierung nichts.
This commit is contained in:
svennickel
2026-09-10 07:28:52 +02:00
parent ab6b91f2b5
commit 668f917a25
2 changed files with 16 additions and 8 deletions
@@ -2258,8 +2258,8 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
. "\n LEFT JOIN #__sportsmanager_verschieberegel AS t6 ON t5.verschieberegel_id = t6.verschieberegel_id"
. "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "")
. "\n ORDER BY IF(zwischenergebnis, 0, IF((heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 2, 1)), IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 0, t1.zeitpunkt) DESC, IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), t1.zeitpunkt, 0), spieltag DESC, heim_name";
. "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR NOT ISNULL(heim_tore) OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "")
. "\n ORDER BY IF(zwischenergebnis, 0, IF((heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 2, 1)), IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), 0, t1.zeitpunkt) DESC, IF(zwischenergebnis OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR (ISNULL(heim_punkte) AND ISNULL(gast_punkte)), t1.zeitpunkt, 0), spieltag DESC, heim_name";
$begegnungen = loadObjectList($db, $query);
} elseif ($type == "eliminations" && $veranstaltung_elimination_index != -1) {
$query = "SELECT t1.*, t2.teamname AS heim_name, t2.verein_id AS heim_verein_id, t3.teamname AS gast_name, t3.verein_id AS gast_verein_id, t4.unbestaetigtes_ergebnis_id, t4.zwischenergebnis, t4.vorgeschlagen as ergebnis_vorgeschlagen, t5.bezeichnung, t5.veranstaltung_id, t5.unterteilung, s1.name as spielort_name,"
@@ -2349,7 +2349,7 @@ function getTabelleSpieltag($veranstaltung,$spieltag,$mannschaften = "",$offset_
. "\n LEFT JOIN #__sportsmanager_team AS t2 ON t1.heim_team_id = t2.team_id"
. "\n LEFT JOIN #__sportsmanager_unbestaetigtes_ergebnis AS t4 ON t1.begegnung_id = t4.begegnung_id"
. "\n LEFT JOIN #__sportsmanager_veranstaltung AS t5 ON t2.veranstaltung_id = t5.veranstaltung_id"
. "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "");
. "\n WHERE t5.status > 0" . kategorieFilter("AND t5.kategorie IN") . (" AND saison_id = $filter_saison_id") . ($ausgetragene_filtern ? " AND ((ISNULL(heim_punkte) AND ISNULL(gast_punkte)) OR (heim_punkte = 0 AND gast_punkte = 0 AND ISNULL(heim_tore)) OR zwischenergebnis)" : "") . ($auszutragende_filtern ? " AND (heim_punkte != 0 OR gast_punkte != 0 OR NOT ISNULL(heim_tore) OR zwischenergebnis)" : "") . ($zwischenergebnisse_filtern ? " AND (ISNULL(unbestaetigtes_ergebnis_id) OR NOT zwischenergebnis)" : "");
$matches_timestamp = loadResult($db, $query);
if (!empty($matches_timestamp)) {
@@ -34,7 +34,7 @@ class HTML_sportsmanager_ticker
$zeit = date("H:i", $zeitpunkt_ts);
if ($begegnung->zwischenergebnis)
$status = 'livenow';
elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte))
elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte) || $begegnung->heim_tore !== null)
$status = 'finished';
elseif ($begegnung->verlegung_eingetragen)
continue;
@@ -111,7 +111,7 @@ class HTML_sportsmanager_ticker
continue;
if ($begegnung->zwischenergebnis)
$status = 'livenow';
elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte))
elseif (!empty($begegnung->heim_spielpunkte) || !empty($begegnung->gast_spielpunkte) || $begegnung->heim_tore !== null)
$status = 'finished';
elseif ($begegnung->verlegung_eingetragen)
continue;
@@ -216,7 +216,7 @@ class HTML_sportsmanager_ticker
<div id="match_resultat">
<div id="team_heim_logo"><?php if (!empty($heim_logo)) echo $heim_logo; ?></div>
<div
id="resultat_holder"><?php if (!$begegnung->zwischenergebnis && empty($begegnung->heim_spielpunkte) && empty($begegnung->gast_spielpunkte)) echo "--|--"; else echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?></div>
id="resultat_holder"><?php if (!$begegnung->zwischenergebnis && empty($begegnung->heim_spielpunkte) && empty($begegnung->gast_spielpunkte) && $begegnung->heim_tore === null) echo "--|--"; else echo $begegnung->heim_spielpunkte . ":" . $begegnung->gast_spielpunkte; ?></div>
<div id="team_gast_logo"><?php if (!empty($gast_logo)) echo $gast_logo; ?></div>
</div>
</td>
@@ -224,7 +224,10 @@ class HTML_sportsmanager_ticker
</tr>
<tr>
<td colspan="3" class="matchdate"><?php echo FormatiertesDatum($begegnung->zeitpunkt); ?>
- <?php echo Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0); ?></td>
- <?php echo Rundenbezeichnung($begegnung->spieltag, $begegnung->unterteilung == 0);
if ($begegnung->heim_tore !== null
&& ($begegnung->heim_tore != $begegnung->heim_spielpunkte || $begegnung->gast_tore != $begegnung->gast_spielpunkte))
echo " - " . Text::_('COM_SPORTSMANAGER_GOALS') . " " . $begegnung->heim_tore . ":" . $begegnung->gast_tore; ?></td>
</tr>
</tbody>
</table>
@@ -257,7 +260,12 @@ class HTML_sportsmanager_ticker
<!-- <tr class="<?php echo ($n % 2 == 0) ? "even" : "odd"; ?>" title="5:2 | 3:5 | 5:4 | 5:1"><td class="num"><?php //echo $n++; ?></td> -->
<td class="heim"><?php if ($sieger == 1) echo "<b>"; ?><?php if (!empty($spiel->heim_spieler_1_id)) echo $spiel->heim_spieler_1_nachname . ", " . $spiel->heim_spieler_1_vorname;
if (!empty($spiel->heim_spieler_2_id)) echo "<br />" . $spiel->heim_spieler_2_nachname . ", " . $spiel->heim_spieler_2_vorname; ?><?php if ($sieger == 1) echo "</b>"; ?></td>
<td class="ergeb"><?php if ($spiel->teamspiel_heim_punkte != 0 || $spiel->teamspiel_gast_punkte != 0) echo $spiel->teamspiel_heim_punkte . ":" . $spiel->teamspiel_gast_punkte; ?></td>
<td class="ergeb"><?php if ($spiel->teamspiel_heim_punkte != 0 || $spiel->teamspiel_gast_punkte != 0 || !empty($spiel->ergebnis_detailliert)) {
echo $spiel->teamspiel_heim_punkte . ":" . $spiel->teamspiel_gast_punkte;
if ($spiel->teamspiel_heim_tore !== null
&& ($spiel->teamspiel_heim_tore != $spiel->teamspiel_heim_punkte || $spiel->teamspiel_gast_tore != $spiel->teamspiel_gast_punkte))
echo "<br/><small>" . $spiel->teamspiel_heim_tore . ":" . $spiel->teamspiel_gast_tore . "</small>";
} ?></td>
<td class="gast"><?php if ($sieger == 2) echo "<b>"; ?><?php if (!empty($spiel->gast_spieler_1_id)) echo $spiel->gast_spieler_1_nachname . ", " . $spiel->gast_spieler_1_vorname;
if (!empty($spiel->gast_spieler_2_id)) echo "<br />" . $spiel->gast_spieler_2_nachname . ", " . $spiel->gast_spieler_2_vorname; ?><?php if ($sieger == 2) echo "</b>"; ?></td>
</tr>