User einer Zufallsgruppe zuordnen...

dennis2412

Gesperrt
Guten Abend zusammen.
Also ich habe folgendes Problem und ich hoffe ihr könnt mir helfen!
Ich habe ein Turnierscript geschrieben bei dem alle Turniere aufgelistet werden!
Es wird dann geprüft ob das Mitglied sich bereits eingeschrieben hat und ist dies der Fall kommt eine Meldung, dass es net möglich ist sich mehrmals einzuschreiben. Nimmt der User allerdings noch nicht am Turnier teil, so soll dieser User eienr bestimmten Gruppe hinzugefügt werden!
Ich habe vorher errechnet, dass es 8 Gruppen mit jeweisl 4 Spielern gibt also 32 Teilnehmer insgesamt. Und beim eintragen des Users in das Turnier soll eine der 8 Gruppen (nicht immer die gleiche) ausgewählt werden und anschliessend soll geprüft werden, ob die Anzahl der Spieler <4 ist! Wenn ja soll dieser USer da geadded werden, wenn nicht, soll eine andere Gruppe gesucht werden! (Vielleicht kann man die Schleife einfach wiederholen)
Ich hoffe ihr könnt mir helfen!

*edit*
Ist es eventuell möglich eine Zzufallszahl zwischen 1 und 4 zu erstellen die zahl wäre dann in der variablte $gruppe gespeichert.
Danach prüft man ob die Anzahl der Spieler in der Gruppe $gruppe <4 ist! Usw. ?
Geht das?
 
Zuletzt bearbeitet:
Ja aber ich weiss net wie ich es übersetzen soll, wenn de Gruppe schon voll ist! Ich glaube hier braucht man eine for schleife, aber das kann isch net :(
 
Wie hast du das ganze Skript denn gebaut? Gibt es schon einen Teil vom Code, der versucht das Problem zu lösen (bitte posten)? Wie speicherst du die Gruppen?
Und warum möchtest du die Gruppen zufällig auffüllen, es ist doch viel einfacher eine Gruppe nach der Anderen aufzufüllen...
 
Wenn man eine Gruppe nach der anderen auffült kann man aber beeinflussen gegen welche Gegner man spielt und das ist ne Art Betrug! NEn Code gibts nicht aber ich werde es so amchen:
Wenn ein User sich eintragen lassen will wird erst geprüft ob er bereits teilnimmt!
Wenn nicht, dann geschieht folgendes:
$gruppe = rand(1,4);
Anschliesse4n wird geprüft wiviele Eintragungen esi n der MYSQL Tabelle gibt where gruppe=$gruppe
Wenns weniger als 4 sind, dann wird er geaddet in der Gruppe wenn nicht soll sich die ganze geschichte in einer schleife solange wiederholen bis ein feier platz gefunden wurde! Aber den letztn Teil weiss ich net wie ich das machen soll!
 
prinzipiel funktioniert der letzte Teil so wenn ich mich nicht vertan habe:
PHP:
while($eingetragen != true){
$gruppe = rand(1,4);
if ( Einträge where gruppe=$gruppe < 4){
 user in Gruppe einfügen;
 $eingetragen = true;
}
else {
 $eingetragen=false;
}
}

aber du must noch sicher Stellen dass:
1. nicht alle Gruppen schon voll sind -> Endlosschleife,
2. kann es passieren dass eine zahl "oft" zufällig erstellt wird -> lange Skriptlaufzeit, hoher Datenbanktraffik...

zu 2. könnte man alle Gruppen die schon dran waren in einem Array speichern ...

da sollte man sich noch was überlegen
 
k danke also das es probs gibt wenn alle gruppen voll sind hab ich mir gedacht!
wie kann ich das lösen? weil wenn nur noch 1 platz frei ist aber zufälligerweise isch 2 in wneigen minute anmeldne und ich grade net da bin was denn dann?
 
Also der Code sieht momentan wie folgt aus:
PHP:
if ($controlif == '0'){
while($controlif == '0'){
$gruppe = rand(1,4);

$anzahlgruppenget=$DB->query("SELECT * FROM fifa2k4_turniere_teilnehmer where turnierid='$turnierid' && gruppe='$gruppe'");
$anzahlgruppen=$DB->num_rows($anzahlgruppenget);

if ($anzahlgruppen < '4'){
$useradden=$DB->query("INSERT INTO fifa2k4_turniere_teilnehmer VALUES ('$user_id', '$turnierid', '$gruppe', '0', '0', '0', '0', '1')");
}else{
echo"
Die Gruppe ist leider voll!";

}
}



}else{

$controlif gibt entweder zurück, dass der User schon eingeschrieben ist (1) oder, dass er das noch machen kann (0).
Aber ich weiss net sorecht weiter! Was ist denn die Gruppe voll ist, dann gibt er den TExt zurück, aber er soll es ja solange probieren bis er nen freien Platz gefunden hat!
 
PHP:
if ($controlif == '0'){
while($controlif == '0'){
$gruppe = rand(1,4);
if(count($getestetegruppen)<4){
         while (in_array($gruppe,$getestetegruppen)){
                $gruppe = rand(1,4);
         }
}
else{
       echo "Alle Gruppen sind voll!";
        exit;
}
$getestetegruppen[] = $gruppe;

$anzahlgruppenget=$DB->query("SELECT * FROM fifa2k4_turniere_teilnehmer where turnierid='$turnierid' && gruppe='$gruppe'");
$anzahlgruppen=$DB->num_rows($anzahlgruppenget);

if ($anzahlgruppen < '4'){
$useradden=$DB->query("INSERT INTO fifa2k4_turniere_teilnehmer VALUES ('$user_id', '$turnierid', '$gruppe', '0', '0', '0', '0', '1')");
echo "Zu gruppe $gruppe hinzugefühgt";
$controlif == 1;
}else{
echo "Gruppe $gruppe ist voll, teste nächste Gruppe.<br>";
$controlif == '0'
}
}
}else{

so ähnlich vieleicht...
 
Zurück