Also da dort nur im Select ein ORDER by RAND() ist und ansonsten nur noch nachjustiert wird wer Heimrecht hat (tiefere Ligaebene bekommt Heimrecht), kann ich da wirklich nur sagen Zufall.
Wenn Du in dem folgenden Code was anderes entdeckst, wäre ich überrascht.
PHP-Code:
$abfrage_teilnehmer = mysql_query("SELECT * FROM vereine_wettbewerbe WHERE wettbewerb_id = '$pokal->pokal_id'
AND status = 'dabei' ORDER BY RAND()");
while($row = mysql_fetch_object($abfrage_teilnehmer)) {
$pokal_teilnehmer[] = $row->verein_id;
}
$pokal_teilnehmer = array_values($pokal_teilnehmer);
for($i = 0; $i < (count($pokal_teilnehmer) / 2); $i++) {
$team1 = new verein($pokal_teilnehmer[$i]);
$team2 = new verein($pokal_teilnehmer[(count($pokal_teilnehmer) - $i - 1)]);
if ($team1->ligenebene == 0){$team1->ligenebene = 5;}
if ($team2->ligenebene == 0){$team2->ligenebene = 5;}
$hteam = ($team1->ligenebene > $team2->ligenebene) ? $team1->verein_id : $team2->verein_id;
$ateam = ($team1->verein_id == $hteam) ? $team2->verein_id : $team1->verein_id;
$heimteam = new verein($hteam);
$auswteam = new verein($ateam);
$string .= $heimteam->name . " - " . $auswteam->name . "
";
}
Nebst späteren Eintrag in die Datenbank.
Edit zur Funktionsweise:
Alle Vereine eintragen etwa bei 8 Teilnehmern den Nummer 0 bis 7 zugeordnet.
$i durchläuft 0 bis 3 und es kommt dann zu den Paarungen 0 gegen 7 / 1 gegen 6 / 2 gegen 5 und 3 gegen 4.
Innerhalb der Paarung wird geschaut wer tiefer spielt. Da einige der Ersatzteam im Pokal in Ligaebene 0 sein könnten, wird für diese angenommen sie sind in Ebene 5 (die beiden if).
Wenn danach dann beispielsweise (nach Ligenebene) 1 vs 5 oder 2 vs 5 oder 1 vs 2 käme, wird das Heimrecht getauscht.
Keine verbliebenen Torkonten, keine Analyse der Teamstärken, nur ein simpler Code.
-------
@EL:
Ist nun auch angesetzt und die Torkonten wurden erhöht.