Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP/MYSQL] Terminarz - Liga, Generacja terminarza ligowego
tomek55
post 5.04.2007, 16:03:36
Post #1





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

Ostrzeżenie: (0%)
-----


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...?
Go to the top of the page
+Quote Post
franki01
post 5.04.2007, 18:20:20
Post #2





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
tomek55
post 5.04.2007, 19:36:29
Post #3





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

Ostrzeżenie: (0%)
-----


Ten kod nie działa...

I jak to wyświetlić?
Go to the top of the page
+Quote Post
franki01
post 5.04.2007, 21:39:26
Post #4





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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

Ten post edytował franki01 5.04.2007, 21:40:24
Go to the top of the page
+Quote Post
tomek55
post 5.04.2007, 23:58:39
Post #5





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post
franki01
post 6.04.2007, 08:07:02
Post #6





Grupa: Zarejestrowani
Postów: 508
Pomógł: 75
Dołączył: 2.11.2005
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


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()...
Go to the top of the page
+Quote Post
tomek55
post 6.04.2007, 12:45:52
Post #7





Grupa: Zarejestrowani
Postów: 38
Pomógł: 0
Dołączył: 8.09.2003
Skąd: olsztyn

Ostrzeżenie: (0%)
-----


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...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.07.2025 - 09:08