mirror of
https://github.com/Deutscher-Tischfussballbund/com_sportsmanager.git
synced 2026-06-10 06:27:52 +00:00
Optimierung Inserts fuer Aktualisierung Ranglisten
This commit is contained in:
@@ -4822,7 +4822,6 @@ function teamstatistikAktualisieren($geaenderte_veranstaltung_id = 0, $geaendert
|
|||||||
function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void
|
function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnierdisziplin_id = 0, $geaenderte_spieler_id = 0, $berechnungen_auswerten = FALSE): void
|
||||||
{
|
{
|
||||||
$db = getDatabase();
|
$db = getDatabase();
|
||||||
|
|
||||||
if ($geaenderte_spieler_id != 0) {
|
if ($geaenderte_spieler_id != 0) {
|
||||||
$query = "SELECT DISTINCT #__sportsmanager_rangliste.*"
|
$query = "SELECT DISTINCT #__sportsmanager_rangliste.*"
|
||||||
. "\n FROM #__sportsmanager_turniermeldung_spieler"
|
. "\n FROM #__sportsmanager_turniermeldung_spieler"
|
||||||
@@ -4837,7 +4836,6 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
|||||||
. "\n FROM #__sportsmanager_berechnung"
|
. "\n FROM #__sportsmanager_berechnung"
|
||||||
. "\n INNER JOIN #__sportsmanager_rangliste ON id = rangliste_id"
|
. "\n INNER JOIN #__sportsmanager_rangliste ON id = rangliste_id"
|
||||||
. "\n WHERE typ = 'rangliste' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"));
|
. "\n WHERE typ = 'rangliste' AND " . (empty($session_id) ? ("session_id < SUBTIME(NOW(), '00:10:00')") : ("session_id = '" . $session_id . "'"));
|
||||||
$berechnungen = loadObjectList($db, $query);
|
|
||||||
} else if ($geaenderte_rangliste_id != 0) {
|
} else if ($geaenderte_rangliste_id != 0) {
|
||||||
$query = "SELECT * FROM #__sportsmanager_rangliste"
|
$query = "SELECT * FROM #__sportsmanager_rangliste"
|
||||||
. "\n WHERE rangliste_id = $geaenderte_rangliste_id";
|
. "\n WHERE rangliste_id = $geaenderte_rangliste_id";
|
||||||
@@ -4939,6 +4937,8 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
|||||||
|
|
||||||
$db->transactionStart();
|
$db->transactionStart();
|
||||||
$meldungen = array();
|
$meldungen = array();
|
||||||
|
$Anzahl = 0;
|
||||||
|
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ";
|
||||||
foreach ($turnierplatzierungen as $index => $turnierplatzierung) {
|
foreach ($turnierplatzierungen as $index => $turnierplatzierung) {
|
||||||
if (empty($turnierplatzierung->spieler_id))
|
if (empty($turnierplatzierung->spieler_id))
|
||||||
continue;
|
continue;
|
||||||
@@ -5030,7 +5030,12 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$punkte[$turnierplatzierung->spieler_id][] = $p;
|
$punkte[$turnierplatzierung->spieler_id][] = $p;
|
||||||
$query = "INSERT INTO #__sportsmanager_rangliste_turnierdisziplin_punkte (rangliste_id, spieler_id, turnierdisziplin_id, platz, punkte) VALUES ('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p') ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);";
|
if ($Anzahl > 0) $query .= ",";
|
||||||
|
$query .= "('$rangliste_id', '$turnierplatzierung->spieler_id', '$turnierdisziplin->turnierdisziplin_id', '$turnierplatzierung->platz', '$p')";
|
||||||
|
$Anzahl++;
|
||||||
|
}
|
||||||
|
$query .= " ON DUPLICATE KEY UPDATE punkte = punkte + VALUES(punkte);";
|
||||||
|
if ($Anzahl > 0){
|
||||||
$db->setQuery($query);
|
$db->setQuery($query);
|
||||||
if (!$db->execute()) {
|
if (!$db->execute()) {
|
||||||
die($db->stderr(true));
|
die($db->stderr(true));
|
||||||
@@ -5056,21 +5061,25 @@ function ranglisteAktualisieren($geaenderte_rangliste_id = 0, $geaenderte_turnie
|
|||||||
$platz = 1;
|
$platz = 1;
|
||||||
$tatsaechlicher_platz = 1;
|
$tatsaechlicher_platz = 1;
|
||||||
$spieler_punkte = 0;
|
$spieler_punkte = 0;
|
||||||
|
$Anzahl = 0;
|
||||||
$db->transactionStart();
|
$db->transactionStart();
|
||||||
|
$query = "INSERT INTO #__sportsmanager_rangliste_punkte(rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ";
|
||||||
foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) {
|
foreach ($punkte_summe as $spieler_id => $spieler_punkte_summe) {
|
||||||
$spieler_teilnahmen = $teilnahmen[$spieler_id];
|
$spieler_teilnahmen = $teilnahmen[$spieler_id];
|
||||||
if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe)
|
if ($platz == 1 || $spieler_punkte != $spieler_punkte_summe)
|
||||||
$tatsaechlicher_platz = $platz;
|
$tatsaechlicher_platz = $platz;
|
||||||
|
if ($Anzahl > 0) $query .= ",";
|
||||||
$query = "INSERT INTO #__sportsmanager_rangliste_punkte (rangliste_id, spieler_id, punkte, teilnahmen, platz) VALUES ('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);";
|
$query .= "('$rangliste_id', '$spieler_id', '$spieler_punkte_summe', '$spieler_teilnahmen', '$tatsaechlicher_platz') ";
|
||||||
|
$Anzahl++;
|
||||||
|
$spieler_punkte = $spieler_punkte_summe;
|
||||||
|
$platz++;
|
||||||
|
}
|
||||||
|
$query .= " ON DUPLICATE KEY UPDATE punkte = VALUES(punkte), teilnahmen = VALUES(teilnahmen), platz = VALUES(platz);";
|
||||||
|
if ($Anzahl > 0){
|
||||||
$db->setQuery($query);
|
$db->setQuery($query);
|
||||||
if (!$db->execute()) {
|
if (!$db->execute()) {
|
||||||
die($db->stderr(true));
|
die($db->stderr(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
$spieler_punkte = $spieler_punkte_summe;
|
|
||||||
$platz++;
|
|
||||||
}
|
}
|
||||||
$db->transactionCommit();
|
$db->transactionCommit();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user