Witam nawiazujac do postu http://forum.php.pl/index.php?showtopic=10...mp;#entry515908 i teraz tak mam w bazie tabele SPOTKANIA w ktorej sa wszytkie mozliwe spotkania 12 druzyn kazdy z kazdym czyli 66 rekordow.
struktura tabeli | id | id_team1 | id_team2 |

I teraz chcial bym uzyskac taki efekt zeby pobrac cala tabele SPOTKANIA i podzielic ja na kolejki tak a by w kazdej kolejce bylo (w tym przypadku 6) niepowtarzajacych sie meczy. Narazie to co mi sie udalo zrobic to podzielic tabele na kolejki fuckjia array_chunk jednak nie umiem sobie poradzic zeby w kazdej kolejce byly inne nie powtazajace sie spotkania prubowalem to ztobic od strony zapytania SQL jednak tam sie chyba nieda.

Dzieli na kolejki
  1. <?php
  2. $zapytanie = 'SELECT id_team1, id_team2 FROM spotkania';
  3. $wynik = mysql_query($zapytanie) or die (mysql_error());
  4.  
  5. for ($i = 0; $i < $rekord = mysql_fetch_assoc($wynik); $i++) {
  6.  
  7.  
  8. $mecze[] = $rekord;
  9.  
  10.  
  11. }
  12.  
  13.  
  14. $result = mysql_query('SELECT * FROM team');
  15. $num_rows = mysql_num_rows($result);
  16.  
  17.  
  18. $num = $num_rows / 2;
  19. $table = array_chunk($mecze, $num);
  20.  
  21.  
  22.  
  23. for ($i = 0; $i < 11; $i++) {
  24.  
  25. $numer = $i + 1;
  26. echo &#092;"Kolejka nr $numer  
  27.  
  28. &#092;";
  29.  
  30. for ($j = 0; $j < 6; $j++) {
  31.  
  32. $team1 = $table[$i][$j][id_team1];
  33. $team2 = $table[$i][$j][id_team2];
  34.  
  35. echo $team1. &#092;" - \". $team2. \"
  36.  
  37. &#092;";
  38.  
  39. }
  40. }
  41. ?>


Tak sobie myslac to chyba by trzeba stworzyc funkcje ktora bu tworzyla nowa tabele wielowymiarowa i sprawdzac czy wartosci sie nie powtarzaja.

Tak zobrazuje czy dobrze mysle:
  1. <?php
  2. kolejka [0] =>
  3.          
  4.       [0] =>                 // Wypisuje pierwsze spotkanie pierwszej kolejki
  5.             [0] => 3
  6.             [1] => 4
  7.       [1] =>                 // Wypisuje drugie spotkanie pierwszej kolejki gdzie [0][1][0][1] != [0][0][0][1]
  8.             [0] => 3
  9.             [1] => 4
  10.       [2] =>                 // Wypisuje trzecie spotkanie pierwszej kolejki gdzie [0][2][0][1] != [0][1][0][1] i [0][0][0][1]
  11.             [0] => 3
  12.             [1] => 4  
  13. kolejka [1] =>
  14.          
  15.       [0] =>                 // Wypisuje pierwsze spotkanie drugiej kolejki gdzie [1][0][0][1] != [0][0][0][1] i [0][1][0][1] i [0][2][0][1]
  16.             [0] => 3
  17.             [1] => 4
  18.       [1] =>                 // Wypisuje drugie spotkanie drugiej kolejki gdzie [1][1][0][1] != [1][0][0][1] i {[0][0][0][1] i [0][1][0][1] i [0][2][0][1]}
  19.             [0] => 3
  20.             [1] => 4
  21.       [...] =>                 // Wypisuje drugie spotkanie drugiej kolejki gdzie [1][...][0][1] != [1][0][0][1] i [1][1][0][1] i ... i  {[0][0][0][1] i ... }
  22.             [0] => 3
  23.             [1] => 4
  24. ?>


Wczoraj siedzialem do rana i cos stworzylem tylko nie do konca dziala porawnie i jest malo elastyczne poniewarz ja sobie ustalilem ze jest 12 druzyn ale co bedzie jesli druzyn bedzie 14 lub wiecej. Nie wiem jak rozwiazac warunek w petli if

  1. <?php
  2. $zapytanie = 'SELECT id_team1, id_team2 FROM spotkania';
  3. $wynik = mysql_query($zapytanie) or die (mysql_error());
  4.  
  5. for ($i = 0; $i < $rekord = mysql_fetch_assoc($wynik); $i++) {
  6.  
  7.  
  8. $mecze[] = $rekord;
  9.  
  10.  
  11. }
  12.  
  13.  
  14. for ($k = 0; $k < 4; $k++) {              // tworzy kolejki
  15.  
  16.  
  17.  
  18. $kolejka[$k][] = array($mecze[0][id_team1], $mecze[0][id_team2]);  // wstawia pierwsze spotkanie na poczatku kazdej kolejki
  19.  
  20. $del1 = array (0);                                     // wartosc ktora ma byc usunieta czyli pierwsze spotkanie z tabeli mecze
  21.  
  22.  
  23. for($i = 0; $i <= count($del1) - 1; $i++) {           // petla usuwa z tabeli mecze pierwsze dodane spotkanie
  24.       array_splice($mecze, $del1[$i], 1);
  25. }
  26.  
  27. //------------------------
  28. $o = 0;                                           // wartosc poczatkowa odejmowana w tabeli del
  29. $y = 1;                                           // od ktorego rekordu ma zaczac sprawdzac  tabela mecze
  30.  
  31. $spr = 0;                                         // ktory rekord ma pierwszy porownac z tabeli kolejka
  32.  
  33. for ($f = 0; $f < 5; $f++) {                  // tworzy 5 nastepnych spotkan w kolejce
  34.  
  35.  
  36. for ($l = 0; $l < $y; $l++) {                 // wykonuje sie tyle razy ile jest potrzebne ma wykonanie petli if
  37.  
  38.  
  39.   if ($kolejka[$k][$spr][0] != $mecze[$y][id_team1] &&   $kolejka[$k][$spr][1] != $mecze[$y][id_team1] &&  // porownuje  po koleji rekordy
  40.            $kolejka[$k][$spr][0] != $mecze[$y][id_team2] &&  $kolejka[$k][$spr][1] != $mecze[$y][id_team2] &&
  41.            $kolejka[$k][$spr][0] && $kolejka[$k][$spr - 1][0] != $mecze[$y][id_team1] &&
  42.            $kolejka[$k][$spr][1] && $kolejka[$k][$spr - 1][1] != $mecze[$y][id_team1] ) {
  43.    
  44. //    echo $mecze[$y][id_team1]. \" - \" .$mecze[$y][id_team2]. \"
  45.  
  46. &#092;";
  47.    
  48.    $kolejka[$k][] = array($mecze[$y][id_team1], $mecze[$y][id_team2]);   // dodaje spotkanie do tabeli kolejka
  49.    
  50.    $del[] = array ($y - $o++, );                             // rekordy do usuniecia
  51.    break;
  52.    }
  53.    else {
  54.    
  55.    $y++;
  56.    
  57.    }
  58.  
  59. }
  60.  
  61. $spr++;      
  62.  
  63.  
  64. }
  65.       for($i = 0; $i <= count($del) - 1; $i++) {         // usuwa rekordy z tabeli mecze ktore sa juz dodane do
  66.       array_splice($mecze, $del[$i][0], 1);           // tabeli kolejka
  67. }  
  68.    array_splice ($del, 0, 5);                        // czysci tabele del
  69.    }
  70.    
  71. echo &#092;"TABLICA MECZE\";
  72.  
  73. echo &#092;"\";
  74. print_r( $mecze );
  75. echo &#092;"\";
  76.    echo &#092;"\";
  77. echo &#092;"TABLICA KOLEJKA\";    
  78. echo &#092;"\";
  79. print_r( $kolejka );
  80. echo &#092;"\";
  81.    
  82. echo &#092;"\";
  83. echo &#092;"TABLICA DEL\";
  84. echo &#092;"\";
  85. print_r( $del );
  86. echo &#092;"\";
  87. ?>


ten kod generuje dobrze 3 kolejki bo nawet jak juz dopisywalem dalesze warunki to mozna powiedziec ze sie wieszalo moze ma ktos pomysl jak to ulepszyc co_jest.gif