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
<?php
$zapytanie = 'SELECT id_team1, id_team2 FROM spotkania';
$mecze[] = $rekord;
}
$num = $num_rows / 2;
for ($i = 0; $i < 11; $i++) {
$numer = $i + 1;
echo \"Kolejka nr $numer
\";
for ($j = 0; $j < 6; $j++) {
$team1 = $table[$i][$j][id_team1];
$team2 = $table[$i][$j][id_team2];
echo $team1. \" - \". $team2. \"
\";
}
}
?>
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:
<?php
kolejka [0] =>
[0] => // Wypisuje pierwsze spotkanie pierwszej kolejki
[0] => 3
[1] => 4
[1] => // Wypisuje drugie spotkanie pierwszej kolejki gdzie [0][1][0][1] != [0][0][0][1]
[0] => 3
[1] => 4
[2] => // Wypisuje trzecie spotkanie pierwszej kolejki gdzie [0][2][0][1] != [0][1][0][1] i [0][0][0][1]
[0] => 3
[1] => 4
kolejka [1] =>
[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]
[0] => 3
[1] => 4
[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]}
[0] => 3
[1] => 4
[...] => // 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 ... }
[0] => 3
[1] => 4
?>
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
<?php
$zapytanie = 'SELECT id_team1, id_team2 FROM spotkania';
$mecze[] = $rekord;
}
for ($k = 0; $k < 4; $k++) { // tworzy kolejki
$kolejka[$k][] = array($mecze[0
][id_team1
], $mecze[0
][id_team2
]); // wstawia pierwsze spotkanie na poczatku kazdej kolejki
$del1 = array (0
); // wartosc ktora ma byc usunieta czyli pierwsze spotkanie z tabeli mecze
for($i = 0; $i <= count($del1) - 1; $i++) { // petla usuwa z tabeli mecze pierwsze dodane spotkanie }
//------------------------
$o = 0; // wartosc poczatkowa odejmowana w tabeli del
$y = 1; // od ktorego rekordu ma zaczac sprawdzac tabela mecze
$spr = 0; // ktory rekord ma pierwszy porownac z tabeli kolejka
for ($f = 0; $f < 5; $f++) { // tworzy 5 nastepnych spotkan w kolejce
for ($l = 0; $l < $y; $l++) { // wykonuje sie tyle razy ile jest potrzebne ma wykonanie petli if
if ($kolejka[$k][$spr][0] != $mecze[$y][id_team1] && $kolejka[$k][$spr][1] != $mecze[$y][id_team1] && // porownuje po koleji rekordy
$kolejka[$k][$spr][0] != $mecze[$y][id_team2] && $kolejka[$k][$spr][1] != $mecze[$y][id_team2] &&
$kolejka[$k][$spr][0] && $kolejka[$k][$spr - 1][0] != $mecze[$y][id_team1] &&
$kolejka[$k][$spr][1] && $kolejka[$k][$spr - 1][1] != $mecze[$y][id_team1] ) {
// echo $mecze[$y][id_team1]. \" - \" .$mecze[$y][id_team2]. \"
\";
$kolejka[$k][] = array($mecze[$y][id_team1
], $mecze[$y][id_team2
]); // dodaje spotkanie do tabeli kolejka
$del[] = array ($y - $o++, ); // rekordy do usuniecia break;
}
else {
$y++;
}
}
$spr++;
}
for($i = 0; $i <= count($del) - 1; $i++) { // usuwa rekordy z tabeli mecze ktore sa juz dodane do }
}
echo \"TABLICA MECZE\";
echo \"TABLICA KOLEJKA\";
echo \"TABLICA DEL\"; ?>
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
Ten post edytował siatkarzyna 17.09.2008, 14:04:52