/* Plugin Name: OPO Ortspokal Description: Verwaltung von Schützen, Mannschaften und Ergebnissen für den Ortspokal. Version: 1.0 Author: Felix */ /* // Admin-Menü hinzufügen add_action('admin_menu', function() { add_menu_page( 'Ortspokal', // Titel der Seite 'Ortspokal', // Menüname 'manage_options', // Berechtigung 'opo-ortspokal', // Slug 'opo_ortspokal_dashboard', // Callback-Funktion 'dashicons-awards', // Icon 3 // Position ); }); // Inhalt der Hauptseite function opo_ortspokal_dashboard() { echo '

Ortspokal – Verwaltung

'; echo '

Willkommen im Ortspokal-Plugin. Hier werden später Schützen, Mannschaften und Ergebnisse verwaltet.

'; } // Untermenüs hinzufügen add_action('admin_menu', function() { // Hauptmenü existiert bereits, jetzt Unterpunkte: add_submenu_page( 'opo-ortspokal', 'Schützen', 'Schützen', 'manage_options', 'opo-schuetzen', 'opo_schuetzen_page' ); add_submenu_page( 'opo-ortspokal', 'Mannschaften', 'Mannschaften', 'manage_options', 'opo-mannschaften', 'opo_mannschaften_page' ); add_submenu_page( 'opo-ortspokal', 'Ergebnisse', 'Ergebnisse', 'manage_options', 'opo-ergebnisse', 'opo_ergebnisse_page' ); add_submenu_page( 'opo-ortspokal', 'Auswertung', 'Auswertung', 'manage_options', 'opo-auswertung', 'opo_auswertung_page' ); add_submenu_page( 'opo-ortspokal', 'Archiv', 'Archiv', 'manage_options', 'opo-archiv', 'opo_archiv_page' ); }); // Platzhalter-Funktionen für die Seiten function opo_schuetzen_page() { global $wpdb; $table = $wpdb->prefix . 'opo_schuetzen'; echo '

Schützen

'; // ------------------------- // LÖSCHEN // ------------------------- if (isset($_GET['delete'])) { $id = intval($_GET['delete']); $wpdb->delete($table, ['id' => $id]); echo '

Schütze wurde gelöscht.

'; } // ------------------------- // BEARBEITEN SPEICHERN // ------------------------- if (isset($_POST['opo_edit_schuetze'])) { $id = intval($_POST['edit_id']); $nachname = sanitize_text_field($_POST['nachname']); $vorname = sanitize_text_field($_POST['vorname']); $klasse = sanitize_text_field($_POST['klasse']); $wpdb->update($table, [ 'nachname' => $nachname, 'vorname' => $vorname, 'klasse' => $klasse ], ['id' => $id]); echo '

Schütze wurde aktualisiert.

'; } // ------------------------- // BEARBEITEN-FORMULAR // ------------------------- if (isset($_GET['edit'])) { $id = intval($_GET['edit']); $s = $wpdb->get_row("SELECT * FROM $table WHERE id = $id"); echo '

Schütze bearbeiten

'; echo '
'; echo ''; echo '
Nachname
Vorname
Klasse
'; echo '

'; echo '
'; echo '
'; return; } // ------------------------- // NEU ANLEGEN // ------------------------- if (isset($_POST['opo_new_schuetze'])) { $nachname = sanitize_text_field($_POST['nachname']); $vorname = sanitize_text_field($_POST['vorname']); $klasse = sanitize_text_field($_POST['klasse']); $wpdb->insert($table, [ 'nachname' => $nachname, 'vorname' => $vorname, 'klasse' => $klasse ]); echo '

Schütze wurde angelegt.

'; } echo '

Neuen Schützen anlegen

'; echo '
'; echo '
Nachname
Vorname
Klasse
'; echo '

'; echo '
'; // ------------------------- // LISTE // ------------------------- $schuetzen = $wpdb->get_results("SELECT * FROM $table ORDER BY nachname ASC"); echo '

Alle Schützen

'; echo ''; echo ''; foreach ($schuetzen as $s) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
ID Nachname Vorname Klasse Aktionen
' . esc_html($s->id) . '' . esc_html($s->nachname) . '' . esc_html($s->vorname) . '' . esc_html($s->klasse) . ' Bearbeiten Löschen
'; } function opo_mannschaften_page() { global $wpdb; $table_m = $wpdb->prefix . 'opo_mannschaften'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_d = $wpdb->prefix . 'opo_disziplinen'; // Mannschaft löschen if (isset($_GET['delete'])) { $id = intval($_GET['delete']); $wpdb->delete($wpdb->prefix . 'opo_ergebnisse', ['mannschaft_id' => $id]); $wpdb->delete($table_m, ['id' => $id]); echo '

Mannschaft wurde gelöscht.

'; } $table_m = $wpdb->prefix . 'opo_mannschaften'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_d = $wpdb->prefix . 'opo_disziplinen'; // Wenn Formular abgeschickt wurde if (isset($_POST['opo_new_team'])) { $name = sanitize_text_field($_POST['name']); $disziplin = intval($_POST['disziplin']); $jahr = intval($_POST['jahr']); // Schützen IDs $s1 = intval($_POST['schuetze1']); $s2 = intval($_POST['schuetze2']); $s3 = intval($_POST['schuetze3']); // Klassen der Schützen holen $klassen = []; foreach ([$s1, $s2, $s3] as $sid) { $klassen[] = $wpdb->get_var("SELECT klasse FROM $table_s WHERE id = $sid"); } // Mannschaftsklasse bestimmen // Klassen der Schützen holen (H, D, J) $klassen = []; foreach ([$s1, $s2, $s3] as $sid) { $klassen[] = strtoupper($wpdb->get_var("SELECT klasse FROM $table_s WHERE id = $sid")); } // KK Mannschaft → immer Klasse X if ($disziplin == 120) { $klasse = 'X'; } // LG Mannschaft → Herren / Damen / Jugend else { // Wenn alle Damen → Damen if (count(array_unique($klassen)) === 1 && $klassen[0] === 'D') { $klasse = 'D'; } // Wenn alle Jugend → Jugend elseif (count(array_unique($klassen)) === 1 && $klassen[0] === 'J') { $klasse = 'J'; } // Alles andere → Herren (auch gemischt) else { $klasse = 'H'; } } // Teilnahme-Regeln prüfen $disziplin_typ = ($disziplin == 110) ? 'LG' : 'KK'; foreach ([$s1, $s2, $s3] as $sid) { $exists = $wpdb->get_var(" SELECT COUNT(*) FROM $table_m WHERE jahr = $jahr AND disziplin_id = $disziplin AND id IN ( SELECT mannschaft_id FROM {$wpdb->prefix}opo_ergebnisse WHERE schuetze_id = $sid ) "); if ($exists > 0) { echo '

Schütze mit ID '.$sid.' hat bereits eine '.$disziplin_typ.'-Mannschaft in diesem Jahr geschossen.

'; echo ''; return; } } // Mannschaft speichern $wpdb->insert($table_m, [ 'name' => $name, 'klasse' => $klasse, 'disziplin_id' => $disziplin, 'jahr' => $jahr ]); $mannschaft_id = $wpdb->insert_id; // Schützen speichern $wpdb->insert($wpdb->prefix . 'opo_mannschafts_schuetzen', [ 'mannschaft_id' => $mannschaft_id, 'schuetze_id' => $s1, 'position' => 1 ]); $wpdb->insert($wpdb->prefix . 'opo_mannschafts_schuetzen', [ 'mannschaft_id' => $mannschaft_id, 'schuetze_id' => $s2, 'position' => 2 ]); $wpdb->insert($wpdb->prefix . 'opo_mannschafts_schuetzen', [ 'mannschaft_id' => $mannschaft_id, 'schuetze_id' => $s3, 'position' => 3 ]); echo '

Mannschaft wurde angelegt.

'; } echo '

Mannschaften

'; // Schützen laden $schuetzen = $wpdb->get_results("SELECT * FROM $table_s ORDER BY nachname ASC"); // Disziplinen laden $disziplinen = $wpdb->get_results("SELECT * FROM $table_d ORDER BY id ASC"); // Formular echo '

Neue Mannschaft anlegen

'; echo '
'; echo '
Name
Disziplin
Jahr
Schütze 1
Schütze 2
Schütze 3
'; echo '

'; echo '
'; echo '
'; // Mannschaften anzeigen $mannschaften = $wpdb->get_results(" SELECT m.*, d.name_kurz FROM $table_m m LEFT JOIN $table_d d ON m.disziplin_id = d.id ORDER BY m.jahr DESC, m.name ASC "); echo '

Alle Mannschaften

'; echo ''; echo ''; foreach ($mannschaften as $m) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
ID Name Disziplin Klasse Jahr Aktionen
'.$m->id.''.$m->name.''.$m->name_kurz.''.$m->klasse.''.$m->jahr.' Löschen
'; } function opo_ergebnisse_page() { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_d = $wpdb->prefix . 'opo_disziplinen'; $table_m = $wpdb->prefix . 'opo_mannschaften'; echo '

Ergebnisse

'; // --------------------------------------------------- // ERGEBNIS LÖSCHEN // --------------------------------------------------- if (isset($_GET['delete'])) { $id = intval($_GET['delete']); $wpdb->delete($table_e, ['id' => $id]); echo '

Ergebnis wurde gelöscht.

'; } // --------------------------------------------------- // EINZEL-ERGEBNIS SPEICHERN // --------------------------------------------------- if (isset($_POST['opo_new_result_single'])) { $schuetze_id = intval($_POST['schuetze_id']); $disziplin_id = intval($_POST['disziplin_id']); $jahr = intval($_POST['jahr']); $ergebnis = floatval(str_replace(',', '.', $_POST['ergebnis'])); $wpdb->insert($table_e, [ 'schuetze_id' => $schuetze_id, 'mannschaft_id' => null, 'disziplin_id' => $disziplin_id, 'ergebnis' => $ergebnis, 'jahr' => $jahr ]); echo '

Einzel-Ergebnis gespeichert.

'; } // --------------------------------------------------- // MANNSCHAFTS-ERGEBNIS SPEICHERN // --------------------------------------------------- if (isset($_POST['opo_new_result_team'])) { $mannschaft_id = intval($_POST['mannschaft_id']); $ergebnis1 = floatval(str_replace(',', '.', $_POST['ergebnis1'])); $ergebnis2 = floatval(str_replace(',', '.', $_POST['ergebnis2'])); $ergebnis3 = floatval(str_replace(',', '.', $_POST['ergebnis3'])); // Mannschaft laden $team = $wpdb->get_row("SELECT * FROM $table_m WHERE id = $mannschaft_id"); $jahr = $team->jahr; $disziplin_id = $team->disziplin_id; // Schützen der Mannschaft laden $schuetzen = $wpdb->get_results(" SELECT schuetze_id FROM {$wpdb->prefix}opo_mannschafts_schuetzen WHERE mannschaft_id = $mannschaft_id ORDER BY position ASC "); // Falls du die Schützen direkt in der Mannschaftstabelle gespeichert hast: // $schuetzen = [$team->s1, $team->s2, $team->s3]; $ergebnisse = [$ergebnis1, $ergebnis2, $ergebnis3]; $i = 0; foreach ($schuetzen as $s) { $wpdb->insert($table_e, [ 'schuetze_id' => $s->schuetze_id, 'mannschaft_id' => $mannschaft_id, 'disziplin_id' => $disziplin_id, 'ergebnis' => $ergebnisse[$i], 'jahr' => $jahr ]); $i++; } echo '

Mannschafts-Ergebnisse gespeichert.

'; } // --------------------------------------------------- // FORMULAR: EINZEL-ERGEBNIS // --------------------------------------------------- $schuetzen = $wpdb->get_results("SELECT * FROM $table_s ORDER BY nachname ASC"); $disziplinen_einzel = $wpdb->get_results("SELECT * FROM $table_d WHERE id IN (11,14,15)"); echo '

Einzel-Ergebnis erfassen

'; echo '
'; echo ''; echo ''; echo ''; echo ''; echo '
Schütze
Disziplin
Jahr
Ergebnis
'; echo '

'; echo '
'; // --------------------------------------------------- // MANNSCHAFTS-ERGEBNIS SPEICHERN + AUTOMATISCHE EINZELWERTUNG // --------------------------------------------------- if (isset($_POST['opo_new_result_team'])) { $mannschaft_id = intval($_POST['mannschaft_id']); $ergebnis1 = floatval(str_replace(',', '.', $_POST['ergebnis1'])); $ergebnis2 = floatval(str_replace(',', '.', $_POST['ergebnis2'])); $ergebnis3 = floatval(str_replace(',', '.', $_POST['ergebnis3'])); // Mannschaft laden $team = $wpdb->get_row("SELECT * FROM $table_m WHERE id = $mannschaft_id"); $jahr = $team->jahr; $disziplin_id = $team->disziplin_id; // Schützen der Mannschaft laden $team_schuetzen = $wpdb->get_results(" SELECT schuetze_id FROM {$wpdb->prefix}opo_mannschafts_schuetzen WHERE mannschaft_id = $mannschaft_id ORDER BY position ASC "); $ergebnisse = [$ergebnis1, $ergebnis2, $ergebnis3]; // 1) Mannschaftsergebnisse speichern $i = 0; foreach ($team_schuetzen as $s) { // Mannschaftsergebnis $wpdb->insert($table_e, [ 'schuetze_id' => $s->schuetze_id, 'mannschaft_id' => $mannschaft_id, 'disziplin_id' => $disziplin_id, 'ergebnis' => $ergebnisse[$i], 'jahr' => $jahr ]); // 2) AUTOMATISCHE EINZELWERTUNG $wpdb->insert($table_e, [ 'schuetze_id' => $s->schuetze_id, 'mannschaft_id' => null, // wichtig! 'disziplin_id' => ($disziplin_id == 110 ? 11 : 14), // LG Mannschaft → LG Einzel, KK Mannschaft → KK Einzel 'ergebnis' => $ergebnisse[$i], 'jahr' => $jahr ]); $i++; } echo '

Mannschafts- und Einzel-Ergebnisse gespeichert.

'; } } function opo_auswertung_page() { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_m = $wpdb->prefix . 'opo_mannschaften'; $table_d = $wpdb->prefix . 'opo_disziplinen'; echo '

Auswertung

'; // --------------------------------------------------- // Jahr auswählen // --------------------------------------------------- $jahre = $wpdb->get_col("SELECT DISTINCT jahr FROM $table_e ORDER BY jahr DESC"); $jahr = $_GET['jahr'] ?? ($jahre[0] ?? date('Y')); echo '
'; echo ''; echo ''; echo '
'; // --------------------------------------------------- // EINZELWERTUNG // --------------------------------------------------- echo '

Einzelwertung

'; $einzel = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname, s.klasse, d.name_kurz FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id LEFT JOIN $table_d d ON e.disziplin_id = d.id WHERE e.jahr = $jahr AND e.mannschaft_id IS NULL ORDER BY d.id ASC, e.ergebnis DESC "); echo ''; echo ''; foreach ($einzel as $e) { echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
Schütze Klasse Disziplin Ergebnis
'.$e->nachname.', '.$e->vorname.''.$e->klasse.''.$e->name_kurz.''.$e->ergebnis.'
'; // --------------------------------------------------- // MANNSCHAFTSWERTUNG // --------------------------------------------------- echo '

Mannschaftswertung

'; $mannschaften = $wpdb->get_results(" SELECT m.*, d.name_kurz FROM $table_m m LEFT JOIN $table_d d ON m.disziplin_id = d.id WHERE m.jahr = $jahr ORDER BY m.disziplin_id ASC, m.name ASC "); echo ''; echo ''; foreach ($mannschaften as $m) { // Ergebnisse der Mannschaft laden $erg = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id WHERE e.mannschaft_id = $m->id ORDER BY e.ergebnis DESC "); // Summe berechnen $summe = 0; foreach ($erg as $e) { $summe += $e->ergebnis; } echo ''; echo ''; echo ''; echo ''; // Schützen anzeigen for ($i = 0; $i < 3; $i++) { if (isset($erg[$i])) { echo ''; } else { echo ''; } } echo ''; } echo '
Mannschaft Disziplin Summe Schütze 1 Schütze 2 Schütze 3
'.$m->name.''.$m->name_kurz.''.$summe.''.$erg[$i]->nachname.', '.$erg[$i]->vorname.' ('.$erg[$i]->ergebnis.')-
'; echo '
'; } // --------------------------------------------------- // SHORTCODE: EINZELWERTUNG // --------------------------------------------------- function opo_shortcode_einzel($atts) { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_d = $wpdb->prefix . 'opo_disziplinen'; // Jahr bestimmen $jahr = isset($atts['jahr']) ? intval($atts['jahr']) : date('Y'); // Einzel-Ergebnisse laden $einzel = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname, s.klasse, d.name_kurz FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id LEFT JOIN $table_d d ON e.disziplin_id = d.id WHERE e.jahr = $jahr AND e.mannschaft_id IS NULL ORDER BY d.id ASC, e.ergebnis DESC "); // HTML-Ausgabe $html = "

Einzelwertung $jahr

"; $html .= ""; foreach ($einzel as $e) { $html .= ""; } $html .= "
Schütze Klasse Disziplin Ergebnis
{$e->nachname}, {$e->vorname} {$e->klasse} {$e->name_kurz} {$e->ergebnis}
"; return $html; } add_shortcode('opo_einzel', 'opo_shortcode_einzel'); // --------------------------------------------------- // SHORTCODE: MANNSCHAFTSWERTUNG // --------------------------------------------------- function opo_shortcode_mannschaft($atts) { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_m = $wpdb->prefix . 'opo_mannschaften'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_d = $wpdb->prefix . 'opo_disziplinen'; // Jahr bestimmen $jahr = isset($atts['jahr']) ? intval($atts['jahr']) : date('Y'); // Mannschaften laden $mannschaften = $wpdb->get_results(" SELECT m.*, d.name_kurz FROM $table_m m LEFT JOIN $table_d d ON m.disziplin_id = d.id WHERE m.jahr = $jahr ORDER BY m.disziplin_id ASC, m.name ASC "); // HTML-Ausgabe $html = "

Mannschaftswertung $jahr

"; $html .= ""; foreach ($mannschaften as $m) { // Ergebnisse der Mannschaft laden $erg = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id WHERE e.mannschaft_id = $m->id ORDER BY e.ergebnis DESC "); // Summe berechnen $summe = 0; foreach ($erg as $e) { $summe += $e->ergebnis; } // Tabellenzeile $html .= ""; // Schützen for ($i = 0; $i < 3; $i++) { if (isset($erg[$i])) { $html .= ""; } else { $html .= ""; } } $html .= ""; } $html .= "
Mannschaft Disziplin Summe Schütze 1 Schütze 2 Schütze 3
{$m->name} {$m->name_kurz} $summe{$erg[$i]->nachname}, {$erg[$i]->vorname} ({$erg[$i]->ergebnis})-
"; return $html; } add_shortcode('opo_mannschaft', 'opo_shortcode_mannschaft'); // --------------------------------------------------- // CSS für Tabellen (Frontend) // --------------------------------------------------- function opo_public_css() { echo " "; } add_action('wp_head', 'opo_public_css'); // --------------------------------------------------- // SHORTCODE: KOMPLETTE ÖFFENTLICHE ERGEBNISANZEIGE // --------------------------------------------------- function opo_shortcode_public() { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_m = $wpdb->prefix . 'opo_mannschaften'; $table_d = $wpdb->prefix . 'opo_disziplinen'; // Jahr bestimmen $jahr = isset($_GET['jahr']) ? intval($_GET['jahr']) : date('Y'); // Disziplin bestimmen $d = $_GET['d'] ?? 'einzel_herren_lg'; // Navigation links $nav = [ 'einzel_herren_lg' => 'Einzel Herren LG', 'einzel_damen_lg' => 'Einzel Damen LG', 'einzel_jugend_lg' => 'Einzel Jugend LG', 'mann_herren_lg' => 'Mannschaften Herren LG', 'mann_damen_lg' => 'Mannschaften Damen LG', 'mann_jugend_lg' => 'Mannschaften Jugend LG', 'mann_kk' => 'Mannschaften KK 50m', 'einzel_damen_kk' => 'Einzel Damen KK 50m', 'einzel_herren_kk' => 'Einzel Herren KK 50m', 'einzel_lg_frei' => 'Einzel LG Frei' ]; // HTML Start $html = "
"; // ------------------------- // Navigation links // ------------------------- $html .= "
    "; foreach ($nav as $key => $label) { $active = ($key == $d) ? "class='active'" : ""; $html .= "
  • $label
  • "; } $html .= "
"; // ------------------------- // Jahr Dropdown // ------------------------- $jahre = $wpdb->get_col("SELECT DISTINCT jahr FROM $table_e ORDER BY jahr DESC"); $html .= "
"; $html .= "
"; $html .= ""; $html .= ""; $html .= "
"; $html .= "
    "; // ------------------------- // Tabelle laden // ------------------------- $html .= opo_public_render_table($d, $jahr); $html .= "
"; return $html; } add_shortcode('opo_public', 'opo_shortcode_public'); // --------------------------------------------------- // RENDER-FUNKTION FÜR TABELLEN // --------------------------------------------------- function opo_public_render_table($d, $jahr) { global $wpdb; $table_e = $wpdb->prefix . 'opo_ergebnisse'; $table_s = $wpdb->prefix . 'opo_schuetzen'; $table_m = $wpdb->prefix . 'opo_mannschaften'; $html = ""; // Hilfsfunktion für Einzel $render_einzel = function($title, $disziplin_id, $klasse) use ($wpdb, $table_e, $table_s, $jahr) { $erg = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id WHERE e.jahr = $jahr AND e.mannschaft_id IS NULL AND e.disziplin_id = $disziplin_id AND s.klasse = '$klasse' ORDER BY e.ergebnis DESC "); $html = "

$title $jahr

"; $html .= ""; $platz = 1; foreach ($erg as $e) { $html .= ""; $platz++; } $html .= "
PlatzNameErgebnis
$platz {$e->nachname}, {$e->vorname} {$e->ergebnis}
"; return $html; }; // Hilfsfunktion für Mannschaft $render_mannschaft = function($title, $disziplin_id, $klasse_filter) use ($wpdb, $table_e, $table_m, $table_s, $jahr) { // Filter für LG (H/D/J) $klasse_sql = ""; if ($klasse_filter !== null) { $klasse_sql = "AND klasse = '$klasse_filter'"; } // Mannschaften laden $mannschaften = $wpdb->get_results(" SELECT * FROM $table_m WHERE jahr = $jahr AND disziplin_id = $disziplin_id $klasse_sql ORDER BY name ASC "); $html = "

$title $jahr

"; $html .= ""; // Mannschaften + Summe berechnen $rows = []; foreach ($mannschaften as $m) { $erg = $wpdb->get_results(" SELECT e.*, s.nachname, s.vorname FROM $table_e e LEFT JOIN $table_s s ON e.schuetze_id = s.id WHERE e.mannschaft_id = $m->id ORDER BY e.ergebnis DESC "); $summe = 0; foreach ($erg as $e) { $summe += $e->ergebnis; } $rows[] = [ 'name' => $m->name, 'summe' => $summe, 'erg' => $erg ]; } // Sortieren nach Summe usort($rows, fn($a, $b) => $b['summe'] <=> $a['summe']); // Ausgabe $platz = 1; foreach ($rows as $r) { $html .= ""; for ($i = 0; $i < 3; $i++) { if (isset($r['erg'][$i])) { $html .= ""; } else { $html .= ""; } } $html .= ""; $platz++; } $html .= "
Platz Mannschaft Summe Schütze 1 Schütze 2 Schütze 3
$platz {$r['name']} {$r['summe']}{$r['erg'][$i]->nachname}, {$r['erg'][$i]->vorname} ({$r['erg'][$i]->ergebnis})-
"; return $html; }; // --------------------------------------------------- // Disziplinen zuordnen // --------------------------------------------------- switch ($d) { case 'einzel_herren_lg': return $render_einzel("Einzel Herren LG", 11, 'H'); case 'einzel_damen_lg': return $render_einzel("Einzel Damen LG", 11, 'D'); case 'einzel_jugend_lg': return $render_einzel("Einzel Jugend LG", 11, 'J'); case 'einzel_herren_kk': return $render_einzel("Einzel Herren KK", 14, 'H'); case 'einzel_damen_kk': return $render_einzel("Einzel Damen KK", 14, 'D'); case 'einzel_lg_frei': return $render_einzel("Einzel LG Frei", 15, 'H'); case 'mann_herren_lg': return $render_mannschaft("Mannschaften Herren LG", 110); case 'mann_damen_lg': return $render_mannschaft("Mannschaften Damen LG", 110); case 'mann_jugend_lg': return $render_mannschaft("Mannschaften Jugend LG", 110); case 'mann_kk': return $render_mannschaft("Mannschaften KK 50m", 120); } return "

Keine Daten.

"; } add_action('wp_head', function() { echo " "; }); function opo_archiv_page() { echo '

Archiv

Hier werden alte Jahre angezeigt.

'; } */