ntec Skrevet 13. desember 2006 Del Skrevet 13. desember 2006 Jeg har lagret disse linjene i en databasetabell med navn table: 1 Nils 2 Arne 3 Bjørn 4 Nils 5 Harald 6 Petrus Hvordan får jeg delt disse spillerne i to lag, helt tilfeldig ved hjelp av php? Lenke til kommentar
VegardStr Skrevet 13. desember 2006 Del Skrevet 13. desember 2006 hadde vært kjekt å få vite. *i mine innlegg* Lenke til kommentar
Ståle Skrevet 13. desember 2006 Del Skrevet 13. desember 2006 jeg har ikke koden, men går det ikke an å: sette alle navnene inn i ett array foreach ($array_med_navn as $navn) { $tall = random_funksjon(); if ($tall == 1) { //sette $navn inn i $array1 } if ($tall == 2) { //sette $navn inn i $array2 } } Lenke til kommentar
ntec Skrevet 13. desember 2006 Forfatter Del Skrevet 13. desember 2006 jeg har ikke koden, men går det ikke an å: sette alle navnene inn i ett array foreach ($array_med_navn as $navn) { $tall = random_funksjon(); if ($tall == 1) { //sette $navn inn i $array1 } if ($tall == 2) { //sette $navn inn i $array2 } } 7494783[/snapback] for meg hørtes dette ut som en dårlig løsning Lenke til kommentar
Gjest Slettet+142 Skrevet 13. desember 2006 Del Skrevet 13. desember 2006 (endret) du kan forsøke å lage en enkel kode ved hjelp av rand().. jeg gidder ikke lage koden nå, men kanskje jeg gidder senere edit: jeg gadd visst å lage kode allikevel.. denne er utestet. i tillegg har jeg aldri laget noe lignende kode før, så du får bare prøve og håpe <?php $query = mysql_query("select * from folk"); $players = array(); $i = 0; while($result = mysql_fetch_assoc($query)){ $players[] = $result["nick"]; // her går jeg utifra at du har en tabell som heter "folk", og at navnet på kolonnen i tabellen som inneholder navnet, heter "nick" // alle spillerne lagres i en array, $players $i++; // øker $i med 1.. dette fordi at jeg vil vite hvor mange spillere det er;) } $used = array(); $team1 = array(); $team2 = array(); for($k=0; $k<$i;$k++){ $rand = rand(0, $i-1); while(in_array($rand, $used)) $rand = rand(0, $i-1); if($k % 2) $team1[] = $players[$rand]; else $team2[] = $players[$rand]; $used[] = $rand; } // for echo '<h2>TEAM 1:</h2><pre>'; foreach($team1 as $player) echo $player.'<br />'; echo '</pre>'; unset($player); echo '<h2>TEAM 2:</h2><pre>'; foreach($team2 as $player) echo $player.'<br />'; echo '</pre>'; unset($player); ?> edit 2: jeg ser at det skjer noe rart.. av og til, så mangler det en person i et av teamene edit 3: jeg tror jeg rettet feilen edit 4: dette skriptet bruker jeg til uttestingen: <html><head> <meta http-equiv="content-type" content="iso-8859-1" /> </head> <body> <?php /* $query = mysql_query("select * from folk"); $players = array(); $i = 0; while($result = mysql_fetch_assoc($query)){ $players[] = $result["nick"]; // her gr jeg utifra at du har en tabell som heter "folk", og at navnet p kolonnen i tabellen som inneholder navnet, heter "nick" // alle spillerne lagres i en array, $players $i++; // ker $i med 1.. dette fordi at jeg vil vite hvor mange spillere det er;) } */ $players = array(); $players[] = "Nils"; $players[] = "Arne"; $players[] = "Bjørn"; $players[] = "Nils2"; $players[] = "Harald"; $players[] = "Petrus"; $i = count($players); $used = array(); $team1 = array(); $team2 = array(); for($k=0; $k<$i;$k++){ $rand = rand(0, $i-1); while(in_array($rand, $used)) $rand = rand(0, $i-1); if($k % 2) $team1[] = $players[$rand]; else $team2[] = $players[$rand]; $used[] = $rand; } // for echo '<h2>TEAM 1:</h2><pre>'; foreach($team1 as $player) echo $player.'<br />'; echo '</pre>'; unset($player); echo '<h2>TEAM 2:</h2><pre>'; foreach($team2 as $player) echo $player.'<br />'; echo '</pre>'; unset($player); ?> </body></html> Endret 13. desember 2006 av Slettet+142 Lenke til kommentar
AlecTBM Skrevet 14. desember 2006 Del Skrevet 14. desember 2006 (endret) hmm fant en bug. hvis det bli lagt på en spiller till så blir den nederste ALTID en mer enn den andre. ska teste litt mer så vent på edit. EDIT Klikk for å se/fjerne innholdet nedenfor <html> <head> <title>Lag gen</title> </head> <body> <?php $players = array ( 'Spiller1', 'Spiller2', 'Spiller3', 'Spiller4', 'Spiller5', 'Spiller6', 'Spiller7', 'Spiller8', 'Spiller9', 'Spiller10', 'Spiller11', 'Spiller12' ); $count = count($players); $lag = $count / 2; $lag1 = $lag; $lag2 = $lag; if($lag != floor($lag)) { unset($lag1); unset($lag2); $rand = rand(0, 1); if($rand == 1) { $lag1 = $lag + 0.5; $lag2 = $lag - 0.5; } else { $lag1 = $lag - 0.5; $lag2 = $lag + 0.5; } unset($rand); } unset($lag); $i = 0; while(count($player1) < $lag1) { $count2 = count($players); $rand = rand(0, $count); if(!empty($players[$rand]) && !empty($count2)) { $player1[$i] = $players[$rand]; unset($players[$rand]); $i++; } elseif(empty($count2)) { $i = $lag1; } } unset($i); unset($rand); $i = 0; while(count($player2) < $lag2) { $count3 = count($players); $rand = rand(0, $count); if(!empty($players[$rand]) && !empty($count3)) { $player2[$i] = $players[$rand]; unset($players[$rand]); $i++; } elseif(empty($count3)) { $i = $lag2; } } echo 'Lag 1<br>'; for($a = 0; $a < count($player1); $a++) { echo $player1[$a].'<br>'; } echo '<br><br>'; echo 'Lag 2<br>'; for($b = 0; $b < count($player2); $b++) { echo $player2[$b].'<br>'; } ?> </body> </html> lagde en kode selv jeg Du får selv velge hvem du vil bruke Endret 14. desember 2006 av AlecTBM Lenke til kommentar
ntec Skrevet 14. desember 2006 Forfatter Del Skrevet 14. desember 2006 takk for svar, skal teste kodene i kveld når jeg er ferdig på skolen Lenke til kommentar
AlecTBM Skrevet 14. desember 2006 Del Skrevet 14. desember 2006 ok si fra om ka du syns da Lenke til kommentar
Martin A. Skrevet 14. desember 2006 Del Skrevet 14. desember 2006 <?php $spillere = array( 'Knut', 'Hedvig', 'Arnulf', 'Kim-Johnny', 'Alf', 'Aase', ); shuffle($spillere); foreach ( $spillere as $key => $value ) { if ($key % 2) { $team1[] = $value; } else { $team2[] = $value; } } echo "<pre>"; print_r($team1); print_r($team2); echo "</pre>"; ?> Eneste er at team2 alltid vil ha en spiller mer om antallet i array'et er et oddetall. Lenke til kommentar
AlecTBM Skrevet 14. desember 2006 Del Skrevet 14. desember 2006 det fiksa jeg med en enkel if setning da. Lenke til kommentar
Svish Skrevet 14. desember 2006 Del Skrevet 14. desember 2006 (endret) mixed array_rand ( array input [, int num_req] ) <?php $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); $rand_keys = array_rand($input, 2); echo $input[$rand_keys[0]] . "\n"; echo $input[$rand_keys[1]] . "\n"; ?> rett ut fra min gode venn Phpmanualen Endret 14. desember 2006 av Tussi_qwerty Lenke til kommentar
ntec Skrevet 14. desember 2006 Forfatter Del Skrevet 14. desember 2006 oksi fra om ka du syns da 7499553[/snapback] ok. ble ikke noe testing i dag, får se hva jeg får til i løpet av helga Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå