webForumDet fria alternativet

Fördela bollar jämt i x antal lådor

PHP

5 svar · 609 visningar · startad av Sparven

Medlem sedan apr. 200378 inlägg
Frågan#1

Jag håller på med en hemsida och behöver lite hjälp med att fördela x antal db-rader jämt i två olika grupper. Ponera att jag har 10 rader och vill tilldela varje rad ett nummer mellan 1 och 5. Det enda kravet är att det är minst 2 rader som har siffran 1,2,3,4 och 5.

Någon som har en lösning?

Medlem sedan juni 20001 251 inlägg
#2

Får man fråga vad det ska användas till?

Dela upp det i två array:er, såhär t.ex:

<?php
$query = mysql_query("SELECT ..");
$i = 0;
while($row = mysql_fetch_assoc($query)) {
  if ($i % 2 == 0) {  
     $first[] = $row;
  }
  else {
     $second[] = $row;
  }
$i++;
}
?>

Du når sedan raderna ifrån respektive grupp genom $first & $second. $first[0] är rad 1 i grupp 1, och $second[0] är rad 1 i grupp 2.

Medlem sedan apr. 200378 inlägg
#3

stevenet skrev:

Får man fråga vad det ska användas till?

Dela upp det i två array:er, såhär t.ex:

<?php
$query = mysql_query("SELECT ..");
$i = 0;
while($row = mysql_fetch_assoc($query)) {
  if ($i % 2 == 0) {  
     $first[] = $row;
  }
  else {
     $second[] = $row;
  }
$i++;
}
?>

Du når sedan raderna ifrån respektive grupp genom $first & $second. $first[0] är rad 1 i grupp 1, och $second[0] är rad 1 i grupp 2.

Självklart får du fråga. Jag håller på att utveckla ett självstyrt system för onlineturneringer av olika former. Har sedan tidigare ett system för att rapportera hockeymatcher som jag vill utveckla lite så att det är mer flexibelt. Detta script skall dela in lag eller spelare i grupper. Vem som hamnar i vilken grupp skall vara helt och hållet "random".

Åter till frågan: Den lösningen är bra, sålänge det handlar om 2 grupper men om det är fler så skiter det sig.

Medlem sedan juni 20001 251 inlägg
#4

Det är därför det är bra att nämna det ifrån början. ;)

<?php 
$query = mysql_query("SELECT .."); 
$i = 0;
$total_groups = 5; 
while($row = mysql_fetch_assoc($query)) { 
  $groups[$i][] = $row; 
  $i++; 
  if($i == ($total_groups)) $i = 0;
} 
?>

$groups[0][0] är rad 1 i grupp 1, och $groups[1][0] är rad 1 i grupp 2.
$groups[0][1] är rad 2 i grupp 1, och $groups[1][1] är rad 2 i grupp 2.
$groups[0][2] är rad 3 i grupp 1, och $groups[1][2] är rad 3 i grupp 2.

osv..

Medlem sedan apr. 200378 inlägg
#5

Där har vi kungen! Det där är snyggt!

Då får jag slumpa ordningen med hjälp av SQL-strängen så att man får olika grupper varje gång man kör scriptet.

Tackar!

Medlem sedan mars 20034 471 inlägg
#6

Sparven skrev:

Då får jag slumpa ordningen med hjälp av SQL-strängen så att man får olika grupper varje gång man kör scriptet.

Det här kanske kan vara till hjälp:

MySQL manualen skrev:

... as of MySQL 3.23, you can retrieve rows in random order like this:

SELECT * FROM tbl_name ORDER BY RAND();

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)