Antworten auf deine Fragen:
Neues Thema erstellen

Round Robin Spielplan erstellen

ackermaennchen

Normalo

Teammitglied
Hi Leute, ich brauch mal wieder euer Schwarmwissen. Es geht darum für eine Liga ein Spielplan zu erstellen, das ganze im Round Robin, sprich jeder einmal gegen jeden. Soweit funktioniert das auch (Außer das er mir bei einem Spieltag eine Partie Doppelt angezeigt hat.) Nur erstellt er mir nur 1 Runde, ich bräuchte allerdings den Code so, das es auch nach Beendigung eine Rückrunde gibt. Gleiche Reihenfolge der Paarung nur eben umgedreht statt Spieler1:Spieler2 sollte dann Spiler2 gegen Spieler1 spielen. So sieht das ganze dann in der Ausgabe bisher aus :

Ich habe das nicht selber geschrieben, das war ein Freund von mir, leider redet er im Moment nicht mehr mit mir weil ich mit der Darstellung des Kalenders nicht zufrieden bin, und es lieber mit Javascript lösen würde wie hier , da ich es Übersichtlicher finde. als wenn man ewig scrollen muss um zum letzten Spieltag zu gelangen.


PHP:
<?php
session_start();
if(!isset($_SESSION["email"])){
  header("Location: ../index.php");
  exit;
}

require("./asset/mysql.php");
  $player = $mysql->prepare("SELECT userid FROM user");
  $player->execute();
  $manschaften= $player->rowCount();

foreach ($player as $player) {
  $spieler[] = $player['userid'];
}

$spieltage = (($manschaften % 2) == 0) ? ($manschaften - 1) : $manschaften;
    $i = $j = $a = $b = $tag = 0;
    for ($i = 1; $i <= $spieltage; $i++) {
        $tag++; $a=1; $b=$i;

        for ($j = 1; $j <=$spieltage; $j++) {
            if ($a < $b) {
                $spieltag[$a][$b] = $tag;
            }
            $a++;$b--;
            if ($b < 1) {
                $b = $spieltage;
            }
        }
    }

    if ($spieltage < $manschaften) {
        for ($i = 1;$i < $manschaften;$i++) {
            $spieltag[$i][$j] = ($i==1?1:$spieltag[$i-1][$i]+1);
        }
    }
    for ($i=1;$i<=$manschaften;$i++) {
        for ($j=1;$j<$i;$j++) {
            $spieltag[$i][$j]=$spieltag[$j][$i]+$spieltage;
        }
    }

    foreach ($spieltag as $i=>$array) {
        foreach ($array as $j=>$spieltag) {
            $spielplan[$spieltag][] = array($i,$j);
        }
    }
    ksort($spielplan);
// Season Timestamp holen
    require("./asset/mysql.php");
      $timestamp = $mysql->prepare("SELECT season, datum_start FROM season WHERE aktiv=1");
      $timestamp->execute();
      foreach ($timestamp as $timestamp) {
        $season = $timestamp['season'];
        $timestamp = $timestamp['datum_start'];
      }
    // Kontrolle ob Spiele bereits erstellt wurden
    require("./asset/mysql.php");
    $control = $mysql->prepare("SELECT season FROM spielplan WHERE season=:season");
    $control->bindParam(":season", $season);
    $control->execute();
    $count = $control->rowCount();

    if ($count === 0) {
// eine Woche abziehen damit diese in der Schleife wieder hinzugefügt wird.
      $timestamp =mktime(0,0,0, date("m",$timestamp),date("d",$timestamp)-7,date("Y",$timestamp));

    for($h=1; $h<=$spieltage; $h++) {

      $timestamp =mktime(0,0,0, date("m",$timestamp),date("d",$timestamp)+7,date("Y",$timestamp));

        for($g=0; $g<=7; $g++){
          $spieler1 = $spieler[$spielplan[$h][$g][0]-1];
          $spieler2 = $spieler[$spielplan[$h][$g][1]-1];

          require("./asset/mysql.php");
          $termin = $mysql->prepare("INSERT INTO spielplan (datum_start, datum_ende, spieler1, spieler2, season) VALUES (:datum_start, :datum_ende, :spieler1, :spieler2, :season)");
          $termin->bindParam(":datum_start", $timestamp);
          $termin->bindParam(":datum_ende", $timestamp);
          $termin->bindParam(":spieler1", $spieler1);
          $termin->bindParam(":spieler2", $spieler2);
          $termin->bindParam(":season", $season);
          $termin->execute();
          $termin=NULL;

          require("./asset/mysql.php");
          $game_erstellen = $mysql->prepare("INSERT INTO eingaben (spieler1, spieler2, season) VALUES (:spieler1, :spieler2, :season)");
          $game_erstellen->bindParam(":spieler1", $spieler1);
          $game_erstellen->bindParam(":spieler2", $spieler2);
          $game_erstellen->bindParam(":season", $season);
          $game_erstellen->execute();

          }
        }
    echo "<div class='info'>die Spiele wurden erstellt.</div><br><br>";
  } else {
    echo "<div class='fehler'>die Spiele wurden bereits erstellt.</div><br><br>";
  }
?>
 
Zuletzt bearbeitet:

Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.611
Beiträge
1.538.341
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben