Liga Matchgenerierung
Phillip
- php
-1 re@lloc
Hallo!
Also ich habe eine Liga gebaut und in dem folgenden Code werden alle Matches erstellt und auf die Spieltage verteilt. Das funktioniert soweit auch.
Also bei 18 Teilnehmern gibt es ja wegen Hin- und Rückrunde (18*18)-18 = 306 Spiele. Diese werden dann auf die Spieltage verteilt, sodass es in dem Fall 9 Spiele am Tag gibt (also 68 Spieltage).
Mein Problem ist jetzt, dass jeder Spieler ein Spiel pro Spieltag haben soll. Momentan sieht das leider so aus, dass da welche mal 3 am Tag haben und dann ein paar TAge gar kein Spiel. Nur leider hab ich gar keine ahnung wie ich das Problem bewältigen kann :(
Hier ist mein Code:
if ($status == 2) //Liga starten
{
$out1 = @mysql_query("select * from ".$prefix."_liga_ligen where id='".$_POST["liga_id"]."';", $sql_id);
$row1 = @mysql_fetch_array($out1);
$out2 = @mysql_query("select * from ".$prefix."_liga_teilnehmer where liga_id='".$_POST["liga_id"]."' ORDER by RAND();", $sql_id);
$out3 = @mysql_query("select * from ".$prefix."_liga_teilnehmer where liga_id='".$_POST["liga_id"]."' ORDER by RAND();", $sql_id);
while ($row2 = @mysql_fetch_array($out2))
{
while ($row3 = @mysql_fetch_array($out3))
{
if ($row2["user_id"] !== $row3["user_id"])
{
if ( mysql_query("INSERT INTO ".$prefix."_liga_matches_temp set
liga_id='".$_POST["liga_id"]."',
user_id_1='".$row2["user_id"]."',
vereins_id_1='".$row2["vereins_id"]."',
user_id_2='".$row3["user_id"]."',
vereins_id_2='".$row3["vereins_id"]."',
runde='hinrunde';", $sql_id) //temp hinrunde
&& mysql_query("INSERT INTO ".$prefix."_liga_matches_temp set
liga_id='".$_POST["liga_id"]."',
user_id_1='".$row3["user_id"]."',
vereins_id_1='".$row3["vereins_id"]."',
user_id_2='".$row2["user_id"]."',
vereins_id_2='".$row2["vereins_id"]."',
runde='rueckrunde';", $sql_id) //temp rückrunde
)
{
$temp_kk = 1;
}
else
{
$meldung = "<br>Ein Fehler ist aufgetreten. Bitte versuchen Sie es später nocheinmal.<br>Sie werden nun automatisch weitergeleitet...
<meta http-equiv="refresh" content="1; URL=index.php?section=admin">";
}
}
}
@mysql_data_seek($out3, 0);
}
if ($temp_kk == 1)
{
$out4 = @mysql_query("select * from ".$prefix."_liga_matches_temp WHERE runde='hinrunde' ORDER by RAND();", $sql_id);
$spiele_pro_spieltag = ($row1["teilnehmer"] / 2);
$spieltage_pro_runde = (((($row1["teilnehmer"] * $row1["teilnehmer"]) - $row1["teilnehmer"])) / $spiele_pro_spieltag);
$hin = 1;
$count_hin = 0;
$rueck = $spieltage_pro_runde + 1;
$count_rueck = 0;
while ($row4 = @mysql_fetch_array($out4))
{
if ($count_hin == $spiele_pro_spieltag) { $count_hin = 0; $hin++; }
$count_hin++;
if ($count_rueck == $spiele_pro_spieltag) { $count_rueck = 0; $rueck++; }
$count_rueck++;
if ( mysql_query("INSERT INTO ".$prefix."_liga_matches set
liga_id='".$_POST["liga_id"]."',
user_id_1='".$row4["user_id_1"]."',
vereins_id_1='".$row4["vereins_id_1"]."',
user_id_2='".$row4["user_id_2"]."',
vereins_id_2='".$row4["vereins_id_2"]."',
runde='hinrunde',
spieltag='".$hin."',
freigegeben='0';", $sql_id) //hinrunde eintragen
&& mysql_query("INSERT INTO ".$prefix."_liga_matches set
liga_id='".$_POST["liga_id"]."',
user_id_1='".$row4["user_id_2"]."',
vereins_id_1='".$row4["vereins_id_2"]."',
user_id_2='".$row4["user_id_1"]."',
vereins_id_2='".$row4["vereins_id_1"]."',
runde='rueckrunde',
spieltag='".$rueck."',
freigegeben='0';", $sql_id) //rückrunde eintragen
)
{
mysql_query("TRUNCATE TABLE ".$prefix."_liga_matches_temp", $sql_id);
mysql_query("UPDATE ".$prefix."_liga_ligen SET status='2', spieltage_hin='".$hin."', spieltage_rueck='".$rueck."' WHERE id='".$_POST["liga_id"]."';", $sql_id);
#$meldung = "<br>Alle Matches wurden erfolgreich erstellt und die Liga gestartet.<br>Sie werden nun automatisch weitergeleitet...
#<meta http-equiv="refresh" content="1; URL=index.php?section=admin"><br>";
}
else
{
$meldung = "<br>Ein Fehler ist aufgetreten. Bitte versuchen Sie es später nocheinmal.<br>Sie werden nun automatisch weitergeleitet...
<meta http-equiv="refresh" content="1; URL=index.php?section=admin">";
}
}
}
}
Ich hoffe mir kann jemand helfen :)
Danke!!
Phillip
Suche mal nach dem Algorithmus "Divide and Conquer" ... ausserdem wurde das Thema auch schon mal hier -> http://www.coding-board.de/board/showthread.php?p=57062 besprochen.