Witam mam taki problem pobieram rekordy z bazy danych z tabeli SPOTKANIA - struktura - | id | id_team1 | id_team2 | tabela zawiera wszytkie spotkania np 12 druzyn kazdy z kazdym czyli 66 rekordow i teraz chcial bym stworzyc nastepna tabele tylko ze tym razem z podzialem na kolejki i tak zeby w kazdej kolejce byly nie powtarzajace sie mecze (wiadomo o co chodzi )
Narazie napisalem kod ktory twowrzy koeljki ale tylko w trzech pierwszych kolejkach spotkania sie nie powtarzaja i ma to zapewne zwiazek z warunkeim w petli if jednak ja nie umiem sobie z tym poradzic.
<?php
$zapytanie = 'SELECT id_team1, id_team2 FROM spotkania';
$mecze[] = $rekord;
}
for ($k = 0; $k < 10; $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
// od ktorego rekordu ma zaczac sprawdzac tabela mecze
$spr = 0; // ktory rekord ma pierwszy porownac z tabeli kolejka
$y = 1;
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] ) {
$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\"; ?>
Dalej nie rozwiązałem problemu i niestety nikt nie odpowiedział na post myślę cały czas intensywnie i może dało by się zastosować funkcje
[b]in_array()[/b] sprawdzała by czy wartosci sa rozne w tablicy ktora sie tworzy KOLEJKA
<?php
if (!in_array(array ($mecze[$y][id_team1
], $mecze[$y][id_team2
]) , $kolejka[$k])) {
$kolejka[$k][] = array($mecze[$y][id_team1
], $mecze[$y][id_team2
]); // dodaje spotkanie do tabeli kolejka
$del[] = array ($y - $o++, ); // rekordy do usuniecia
}
else {
$y++;
break;
}
?>
z tym ze jesli jedna wartosc jest rozna to in_array zwraca true a ja bym chcial tak zeby oby dwie wartosci byly rozne czyli jak jest
1 - 2 i 1 - 3 to !in_array zwraca true
a powino byc tak np
1 - 2 i 3 -4
prosze o pomoc
--------Edytowane 2008-09-28-----
03:18----------------------------------------------------------------------------------------------------------------
Ehhhh nie daje za wygrana wrzucam to co ostatnio wycudowalem i jeszcze znalazlem taka strone cos takiego mi sie marzy
http://schedules.footballguys.com/freesche...chedule=12team9 <?php
$zapytanie = 'SELECT id_team1, id_team2 FROM spotkania ORDER BY id_team1 ASC';
$mecze[] = $rekord;
}
for ($k = 0; $k < 11; $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 }
echo $wynik . \" || \"; $wynik2 = $wynik;
$o = 0;
$spr = 0;
for ($p = 0; $p < $wynik2; $p++){
$a = array ($mecze[$spr][id_team1
], $mecze[$spr][id_team2
]);
$jest = '';
foreach ($kolejka[$k] as $array1){
foreach ($a as $a1){
$jest = \"Jest\";
}
else {
if ($jest!= \"Jest\")
$jest = \"Brak\";
}
}
}
if ($jest != \"Jest\"){
$kolejka[$k][] = array($mecze[$spr][id_team1
], $mecze[$spr][id_team2
]); $del[] = array ($spr - $o++, );
}
else {
}
echo $spr . \" - \" . $jest . \" \"; $spr++;
}
for($i = 0; $i <= count($del) - 1; $i++) { // usuwa rekordy z tabeli mecze ktore sa juz dodane do }
}
?>
No i nawet postepy sa ale ten skrypt tworzy 11 kolejek z tym ze pare kolejek jest po 5 spotkan a nie jak powino byc po 6. Jednak mysle ze problem jest w zapisie spotkan tzn
nie moze byc chyba tak :
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
itd....
Ten post edytował siatkarzyna 30.09.2008, 01:03:52