Auslosungssystem?

2Pac

Erfahrenes Mitglied
Kann mir jemand sagen wie ich folgendes verwirklichen kann?:

Ich möchte ein Script schreiben welches aus einer Datenbank 128 Datensätze liest. (Spieler) Diese 128 Spieler sollen dann zufällig in 4er Gruppe eingeteilt werden. bzw. später dann die überbleibenden 64 auch nochmal. Und hinterher K.O. System usw... Aber beim Posten eines Ergebnisses über das Formular will ich denen auch noch Ergebnisse zuteilen. Aber das ja nun auch schon wieder etwas schwerer oder? weil ich kann ja nicht wissen in welcher Gruppe der gelandet ist bzw. welcher Datanbanktabelle. Oder sollte ich in der Grossen Datanbank der 128 einfach nur ne spalte Gruppe hinzufügen? Aber wie mache ich das dann für stats in der 4er Gruppe. Weil wenn ich global wieder spalten der stats mache sind die ja für die 2. 4er Gruppe immernoch drinne :(

Kann mir bitte jemand bei der Lösung dieses Problems behilflich sein
Big Thx im Voraus...
 
Also ich würde zwei neue Felder einführen:

Gruppennummer und Level

im Feld Gruppennummer kanns du speichen in welcher Gruppe der Spieler
gelandet ist und im Level Feld auf welchen Spiellevel es sich bezieht.

Nick|gruppennr|level
karl|1|0
eugen|1|0
erwin|1|0
uwe|1|0

die vier sind in einer gruppe gelandet
bei der nächsten Runde ist dann der level auf 1 usw.
 
ja und wie lose ich das zufällig aus also die spieler zu den gruppen? und zwar so das keiner doppelt vergeben ist?
 
wir setzen die gruppennr und level auf 0

$erg = mysql_query("update spieler set gruppennr= '0',level = '0'",$dblink);

dann verteilen wir die Gruppen neu

for ($lo=1;$lo<32;$lo++) {
$erg = mysql_query("update spieler set gruppennr = '$lo' where gruppennr = 0 order by rand() limit 4",$dblink);
}
 
Zuletzt bearbeitet:
em noch ne Frage hast du vielleicht einen Vorschlag wie ich es verwirklichen kann das es automatisch die nächste Runde auslost und diese auch online bringt, wenn alle spieler in jeder Gruppe ihre Spiele gemacht haben. Dann soll eine K.O. Runde ausgelost werden. Und es soll natürlich integriert sein das die jenigen Ergebnisse posten können bzw. Sie aber wiederum nicht doppelt posten können? Denn das ganze soll eine Art Turnierscript werden für eine Clanhomepage die öfter einmal ein Turnier veranstaltet...

Nochmal big Thx schonmal denn hast mir ja schon weitergeholfen mit dem auslosen... Wäre cool wenn du ne Idee für das was ich eben geschrieben habe hast. :D
 
rand() macht ne Zufallszahl

also

order by rand()

würfelt also deine Datenbank zufällig zusammen

limit 4

der Befehl wirkt sich nur auf 4 Datensätze aus

in unserem Fall ordnert er also 4 Usern eine neue Gruppennummer zu die aus der Var $lo kommt


--------

kommt drauf an wie die Ergebnisse aussehen

im Prinzip brauchst du dann noch ein Ergebnisfeld wenn das 0 ist gibts noch kein Ergebnis ansonsten sagen wir mal ne Punktzahl für jeden User

Nick|gruppennr|level|punkte
karl|1|0|5
eugen|1|0|7
erwin|1|0|3
uwe|1|0|1

in dem Fall sollten ja karl und eugen weiterkommen

aber wie gesagt lass mal ein paar Infos los wie die Ergebnisse aussehen...

------

so wie ich es bisher verstanden habe
sieht das ja so aus:
128 user in der ersten runde zu viert
jeweils zwei kommen weiter

nächste runde wieder 4, sprich es geht immer in 4er Gruppen weiter bis in der letzten Runde die besten 4 zusammen kommen - richtig?
 
Zuletzt bearbeitet:
Also ich beschreibe einmal genau wie das ablaufen soll so ein Turnier:
1. Anmeldung der User immer mit insert tabelle. Dann kontrolle ab 128 user in der datenbank stehn also mit mysql_num_rows
2. Wenn 128 angemeldet sind, dann soll er die 1. Runde online stellen diese besteht aus 4er Gruppen. In diesen 4er Gruppen sollen jeweils die besten 2 weiter kommen. Ein Ergebnis soll gepostet werden können wie folgt:

Spieler1 - Spieler2 Tore1:Tore2
Dann soll er aber erkennen ob das Spiel schon einmal eigetragen wurde. Weil sonst würde man ja doppelt posten können.

Wenn alle jedoch ihre 3 Spiele haben. Dann soll die nächste Runde online gehen. Indem Fall wieder eine 4er Gruppe. Dort soll das ganze nochmal so ablaufen. Wenn dann dort wieder die beiden 1. feststehen die weiter kommen, dann soll es nun im K.O. System weiter gehen. Im Modus best of three. Das heisst ein Spiel sieht nun folgender massen aus:

Spieler1 - Spieler2 Tore1:Tore2|Tore3:Tore4|Tore5:Tore6

Auch hier kein doppelposten möglich. Sollte jedenfalls ;D Und dann eben kontrollieren ob alle Spiele gespielt werden. So solls dann weiter gehen bis nur noch 4 Leute übrig sind (Also im K.O.Modus)
Und dann soll halt eingetragen werden wer gewonnen hat das Turnier wer 2. ist wer 3. und wer 4. aber das eintragen ist ja sicherlich nicht das problem. da mach ich halt ne extra tabelle und mach dann nen insert...
 
Ich mache hie nur mal ein paar Codeschnipsel :)

Wir brauchen 2 Tabellen:
tunier
spieler|punkte|gruppe|level|spielnr
und spiele
spieler|gegner|tore|gegentore

alle felder sollten den defaultwert Null haben.

Als erstes räumen wir die Tabelle auf und holen uns Spieler aus einer andren Tabelle

PHP:
$erg = mysql_query("delete from tunier",$dblink); #löschen alter Daten
$erg = mysql_query("delete from spiele",$dblink);
$erg = mysql_query("insert into tunier(spieler) select nick from die_user_db limit 128",$dblink)
# spielernamen geholt - jetzt verlose die gruppe
for ($lo=0;$lo<32;$lo++) {
 $erg = mysql_query("update tunier set gruppe = '$lo' where gruppe = Null order by rand() limit 4",$dblink);
}

PHP:
#ermittle die Gegner
#var $nick und $grp für die Gruppenid werden gebraucht
$erg = mysql_query("select spieler from tunier where gegner = null and gruppe = '$grp' and spieler <> '$nick'",$dblink);

Eintrag eines Spiels
als Var werden gebraucht Spieler; Gegner, Tore, Gegentore
PHP:
#wir sortieren den Eingang
if ($gegner > $spieler) {
 $stemp = $gegner;
 $gegner = $spieler;
 $spieler = $stemp;
 $ttemp = $tore;
 $tore = $gegentore;
 $gegentore = $ttemp;
}
# spiel schon vorhanden ?
$erg = mysql_query("select * from spiele where spieler = '$spieler' and gegner = '$gegner'",$dblink);
if (mysql_num_rows($erg) == 0) {
 # neuer Eintrag
 $erg = mysql_query("insert into spiele(spieler,gegner,tore,gegentore) values('$spieler','$gegner','$tore','$gegentore'",$dblink);
 # punktevergabe 2 = gewonnen, 1 = unentschieden, 0 = verloren
 if (if $tore > $gegentore) {
  #gewonnen
  $punkte = 2;
 } elseif ($tore < $gegentore) {
  # verloren
  $punkte = 0;
 } else {
  # unentschieden
   $punkte = 1;
 }
 # punkte speichen
 $erg = mysql_query(update tunier set punkte = '$punkte' + punkte, spielnr = spielnr + 1 where spieler = '$spieler'",$dblink);
 $erg = mysql_query(update tunier set punkte = punkte + 2 - '$punkte', spielnr = spielnr + 1 where spieler = '$gegner'";$dblink);
} else{
 echo "Fehler den Eintrag gibt es schon<br>";
}

die besten zwei kommen weiter

PHP:
for ($lo=0;$lo<32;$lo++) {
 $erg = mysql_query("update tunier set level = level + 1 where gruppe odrer by punkte desc limit 2",$dblink);
}

denke das hilft weiter :)
 
Zuletzt bearbeitet:
Jo danke dir für deine Hilfe und dein Zeit :) ich werde es demnächst ausprobieren wenn ich mal zeit habe wenn ich net weiter kommt mach ich hier einfach nochmal nen beitrag rein dann wirste ja sehn ob ich deine hilfe nochmal brauch :)

Blos hab grad viel mit Schule Bewerbungen usw. um die Ohren...
 
Zurück