Freilos gegen Freilos was jetzt tun?

2Pac

Erfahrenes Mitglied
Hallo!

Ich habe ein Turnierscript programmiert, in welchem gespeichert wird wieviele Spieler an einem Turnier teilnehmen. Dieses wird ausgelost und sind weniger Teilnehmer als diese Zahl tatsächlich angemeldet, dann erstelle ich eine Freilosanzahl in Höhe der Differenz der beiden.

Diese Freilose bekommen die Namen Freilos$i wobei $i von 1-$Freilose geht.

Jedes Freilos wird als offizieller Teilnehmer in eine Turnierteilnehmerdatenbank gespeichert. Dort habe ich folgende spalten:

Nick, id, auslosung (Für die Zuordnung der Spiele), def (Ob gg jemanden gewertet wurde damit man nicht doppelt werten kann).

Die Auslosung findet dann so statt, dass ich von 1-Teilnehmerzahl jedem Spieler eine Ziffer in auslosung zuordne. (rand() natürlich)

Dann werden die Spiele erstellt in Form von Spieler mit auslosung = 1 gegen den mit 2. 3 gegen 4 usw und in eine Tabelle namens runden gespeichert.

Spalten: id, spieler1, spieler2, tore1, tore2, gespielt

Ich habe bereits eingebaut das wenn jemand gegen ein Freilos spielt, ein 3:0 Sieg zugute bekommt. Jetzt weiss ich aber nicht wie ich es einbauen kann, dass eines der beiden Freilose weiterkommt wenn Freilos 1 gegen Freilos 3 spielen muss zum Beispiel. Wenn mehr Freilose als Spieler da sind kann das bei der Auslosungsart schonmal passieren.

Hat jemand eine Idee wie man das am besten bewerkstelligen kann, dass ich eines der beiden aufeinandertreffenden Freilose direkt in die nächste Runde schicke.

Danke im Voraus 2Pac
 
Du hast geschrieben, daß jedes Freilos als Teilnehmer behandelt wird.
Also geht es dir nur darum, den Status "Freilos$i" gegen "Freilos$i" abzufangen, richtig?
Vorausgesetzt, kein Turnierteilnehmer hat den Namen "Freilos" :D , könntest du das so abfangen:
PHP:
if (substr($teilnehmer1,0,7)=="Freilos" && substr($teilnehmer2,0,7)=="Freilos") {
    machwas();
}
 
Weiss jemand Rat was ich falsch mache?

Ich beschreib mal nochmal genau was ich mache, will nicht den kompletten Code hier pasten denn es stimmt nur nicht das Ergebnis eintragen der Rest geht.

Also als erstes Lese ich aus einer Datenbank die Teilnehmerzahl und die Runde aus. Wenn Runde = 0 ist dann überprüfe ich ob die Teilnehmerzahl der Anzahl in der Datenbank gleicht. Tut Sie dies nicht, rechne ich die Differenz aus um die Anzahl der Freilose zu errechnen. Diese werden wie normale User behandelt und in die Tabelle Turnierteilnehmer rein gesteckt.

Dann wird jedem Spieler in die Spalte auslosung eine Zahl von 1-Teilnehmerzahl gesteckt.

BIS HIERHER FUNKTIONIERT ALLES NACH PLAN!

Wenn die Teilnehmerzahl übereinstimmt kommt jetzt folgendes:

PHP:
for ($i=1; $i<$runden_spiele2; $i++)
              {
               $i2 = $i*2;
               $i3 = $i2-1;
               $select = mysql_db_query("$DatabaseName", "SELECT nick FROM turnierteilnehmer where auslosung=$i3") OR die(mysql_error());
               while ($data = mysql_fetch_row($select))
               {
                $spieler1 = $data[0];
                $select2 = mysql_db_query("$DatabaseName", "SELECT nick FROM turnierteilnehmer where auslosung=$i2") OR die(mysql_error());
                while ($data = mysql_fetch_row($select2))
                {
                 $spieler2 = $data[0];
                 $var = 0;
                 mysql_db_query("$DatabaseName", "INSERT INTO runden (runde, spieler1, spieler2, tore1, tore2, gespielt) VALUES ('$aktuelle_runde2', '$spieler1', '$spieler2', '$var', '$var', '$var')") OR die(mysql_error());
                }
               }
              }

Stimmt es nicht überein kommt folgendes:

PHP:
for ($i=0; $i<$runden_spiele2; $i++)
              {
               $i2 = $i*2;
               $i3 = $i2-1;
               $select = mysql_db_query("$DatabaseName", "SELECT nick FROM turnierteilnehmer where auslosung=$i3") OR die(mysql_error());
               while ($data = mysql_fetch_row($select))
               {
                $spieler1 = $data[0];
                $select2 = mysql_db_query("$DatabaseName", "SELECT nick FROM turnierteilnehmer where auslosung=$i2") OR die(mysql_error());
                while ($data = mysql_fetch_row($select2))
                {
                 $spieler2 = $data[0];
                 $var = 0;
                 if (substr('$spieler1',0,7)=="Freilos" && substr('$spieler2',0,7)=="Freilos")
                 {
                  mysql_db_query("$DatabaseName", "INSERT INTO runden (runde, spieler1, spieler2, tore1, tore2, gespielt) VALUES ('$aktuelle_runde2', '$spieler1', '$spieler2', '3', '0', '1')") OR die(mysql_error());
                  mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET def=1 where nick='$spieler1'") OR die(mysql_error());
                  mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET def=1 where nick='$spieler2'") OR die(mysql_error());
                  mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET drin=1 where nick='$spieler1'") OR die(mysql_error());
                  mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET drin=0 where nick='$spieler2'") OR die(mysql_error());
                 }
                 else
                 {
                  mysql_db_query("$DatabaseName", "INSERT INTO runden (runde, spieler1, spieler2, tore1, tore2, gespielt) VALUES ('$aktuelle_runde2', '$spieler1', '$spieler2', '$var', '$var', '$var')") OR die(mysql_error());
                  for ($o=0; $o<$freilose2; $o++)
                  {
                   $freilosgegner = "Freilos$o";
                   $select3 = mysql_db_query("$DatabaseName", "SELECT spieler1,id FROM runden where spieler2='$freilosgegner'") OR die(mysql_error());
                   while ($data = mysql_fetch_row($select3))
                   {
                    $spieler_1 = $data[0];
                    $spielid = $data[1];
                    mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET def=1 where nick='$spieler_1'") OR die(mysql_error());
                   }
                   $select4 = mysql_db_query("$DatabaseName", "SELECT spieler2,id FROM runden where spieler1='$freilosgegner'") OR die(mysql_error());
                   while ($data = mysql_fetch_row($select4))
                   {
                    $spieler_2 = $data[0];
                    $spielid = $data[1];
                    mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET def=1 where nick='$spieler_2'") OR die(mysql_error());
                   }
                  }
                 }
                }
               }
              }

for ($i=0; $i<$freilose; $i++)
              {
               $i2 = $i+1;
               $name_spieler = "Freilos$i2";
               $var = 1;
               mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET drin=0 WHERE nick='$name_spieler'") OR die(mysql_error());
               $kontrolle1 = mysql_db_query("$DatabaseName", "SELECT * FROM runden WHERE spieler1='$name_spieler'") OR die(mysql_error());
               $num_kontrolle1 = mysql_num_rows($kontrolle1);
               if ($num_kontrolle1 == 1)
               {
                mysql_db_query("$DatabaseName", "UPDATE runden SET tore2=3 WHERE spieler1='$name_spieler'") OR die(mysql_error());
               }
               $kontrolle2 = mysql_db_query("$DatabaseName", "SELECT * FROM runden WHERE spieler2='$name_spieler'") OR die(mysql_error());
               $num_kontrolle2 = mysql_num_rows($kontrolle2);
               if ($num_kontrolle2 == 1)
               {
                mysql_db_query("$DatabaseName", "UPDATE runden SET tore1=3 WHERE spieler2='$name_spieler'") OR die(mysql_error());
               }
               mysql_db_query("$DatabaseName", "UPDATE runden SET gespielt=1 WHERE spieler1='$name_spieler' or spieler2='$name_spieler'") OR die(mysql_error());
              }
              mysql_db_query("$DatabaseName", "UPDATE turnier SET runde=1 WHERE id=1") OR die(mysql_error());
              mysql_db_query("$DatabaseName", "UPDATE turnierteilnehmer SET def=0 where def=1") OR die(mysql_error());

Sorry das ich das so Poste aber ich seh keinen Fehler. Vielleicht hab ich auch einen Denkfehler oder sowas!

Wäre sehr dankbar für jede Hilfe!

MfG 2Pac
 
2Pac hat gesagt.:
..... dass eines der beiden Freilose weiterkommt wenn Freilos 1 gegen Freilos 3 spielen muss zum Beispiel. Wenn mehr Freilose als Spieler da sind kann das bei der Auslosungsart schonmal passieren......


Wieso sollte es mehr Freilose geben, als Spieler ?
Dann ist es doch besser eine Turnierrunde weniger zu absolvieren.

z. B. bei einem 32er Turnier sind 12 Spieler und 20 Freilose.

Mache dann doch besser eine 16er Runde mit 4 Freilosen. Ist doch auch logischer, oder hast du ein bestimmtes System was du aus irgendwelchen Gründen nicht verändern kannst/willst ?
 
Ja natürlich ist das logischer. Aber schau mal ich will das Script weitergeben. Und sagen wir mal jemand macht ein Turnier mit 32 Leute. Dann wird das Turnier erstellt und die Teilnehmerzahl auf 32 gesetzt.

Nun melden sich nur 14 Teilnehmer an.

Das Script erstellt aber die fehlenden Freilose bis 32 hoch und lost die Runde zufällig aus. Natürlich gibts beim Script eine Funktion die Teilnehmer runter zu setzen. Aber nehmen wir an der jenige macht es nicht. Ich will nur vorbeugen, dass dann solch eine Situation entsteht. Und das Problem ist dann, er setzt alle Freilos - Freilos Spiele auf 3:3 und jeder der Freilose wird auf drin=0 gesetzt.

Und das möchte ich nicht! Er muss die Hälfte davon auf 0 setzen und die andere Hälfte auf 1.

Wenn ich das ganze beim Auslosen beachten will, müsste ich mein ganzes Script auf den Kopf stellen und umbauen und das ist mir im Moment zu Zeitaufwendig deshalb, versuche ich diese kürzere Variante zu realisieren.

Wenn du eine Idee haben solltest, was falsch ist wäre ich dir sehr verbunden es zu posten. Und sei es nur wenn du mir sagst wo mein Denkfehler im oben genannten Script ist.

MfG 2Pac
 
Zurück