Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP/MYSQL] Terminarz - Liga
Forum PHP.pl > Forum > PHP
tomek55
Mam dwie tabele w mysql:

  1. Druzyny:
  2.  
  3. ID
  4. ID_LIGI
  5. NAZWA

  1. Mecze:
  2.  
  3. ID
  4. KOLEJKA (nr)
  5. GOSPODARZ
  6. GOSC


Załóżmy że mam w tabeli drużyny 6 drużyn z ligi o ID 2. Jak teraz wylosować i wygenerowac terminarz rozgrywek tak aby w jednej kolejce każda z drużyn występowała tylko raz. Chciałbym wygenerować to w taki sposób:

  1. Kolejka 1
  2.  
  3. team A - team B
  4. team C - team D
  5. team E - team F
  6.  
  7. Kolejka 2
  8.  
  9. team A - team F
  10. team B - team C
  11. team D - team E


itd...

Ważne jest aby pary drużyn nie powtarzały sie do końca rundy, a jeśli by dało rade to z rundą rewanżową.

Proszę o pomoc gdyż zupełnie nie wiem jak za to sie zabrać, czy wogle dobre są struktury tabeli...?
franki01
Pobralbym wszystkie druzyny z bazy i w petli w php po kolei generowal mecze (zakladam ze ID jest automatyczne):

  1. <?php
  2. $liga = 1;
  3.  
  4. $query = "SELECT * FROM `Druzyny` WHERE `ID_LIGI`=$liga";
  5. $result = mysql_query($query);
  6.  
  7. while($row = mysql_fetch_assoc($result)) {
  8.  $query = "SELECT * FROM `Druzyny` WHERE `ID_LIGI`=$liga AND `ID`>".$row['ID']." ORDER BY `ID`";
  9.  $result2 = mysql_query($query);
  10.  
  11.  while($row2 = mysql_fetch_assoc($result2)) {
  12. $query = "INSERT INTO `Mecze`(`KOLEJKA`,`GOSPODARZ`,`GOSC`) VALUES(kolejka,".$row['ID'].",".$row2['ID'].")";
  13. mysql_query($query);
  14.  }
  15. }
  16. ?>


Tylko niezbyt mam pomysl co z kolejka zrobic biggrin.gif Moze niech ktos inny pomysli ;P
tomek55
Ten kod nie działa...

I jak to wyświetlić?
franki01
Wiadomo ze nie dziala do konca bo jest tam tekst "kolejka" i to tylko dodaje do bazy. Pokazac mozna to zwykla petla while. Juz nie bede opisywal bo to chyba nie jest trudne ;D
tomek55
No ok działa, jest każdy z każdym tylko jak zrobić teraz żeby podzielić to na kolejki i w każdej kolejce każda drużyna występowała tylko raz?
franki01
To generuje mecze na jedna runde. Wpadlem na pomysl jak mozna zrobic to biggrin.gif


  1. <?php
  2. $liga = 1;
  3.  
  4. $query = "SELECT * FROM `Druzyny` WHERE `ID_LIGI`=$liga";
  5. $result = mysql_query($query);
  6. $max = mysql_num_rows($result);
  7.  
  8. $i = 0;
  9. while($row = mysql_fetch_assoc($result)) {
  10.  $query = "SELECT * FROM `Druzyny` WHERE `ID_LIGI`=$liga AND `ID`>".$row['ID']." ORDER BY `ID`";
  11.  $result2 = mysql_query($query);
  12.  
  13.  $o = 0;
  14.  while($row2 = mysql_fetch_assoc($result2)) {
  15. $kolejka = $max - $i + $o;
  16. $query = "INSERT INTO `Mecze`(`KOLEJKA`,`GOSPODARZ`,`GOSC`) VALUES($kolejka,".$row['ID'].",".$row2['ID'].")";
  17. mysql_query($query);
  18. $o++'
  19.  }
  20. $i++;
  21. }
  22. ?>



Chyba powinno zadzialac. Jak cos jest zle to na poczatek radze uzyc or die mysql_error()...
tomek55
Niestety nie działa dobrze ale coś sie już dzieje na początek mam 4 zespoły.

Terminarz zaczyna sie od 2 kolejki i kończy na 6 z tego jedyną dobrą kolejką jest 4 gdzie są dwa mecze a w następnych po jednym...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.