Autor Zpráva
gogy27
Profil
Nedavno som mal problem s vytvorenim vypisania zapasov pre svoju mini ligu a chcem vypisat zapasy atd... tu je script prosim aby ste si to pozreli niekde je chybycka lebo chcem aby v tom $den bolo 6 zapasov normalne jak 1 kolo zeby sa nestalo aby sa opakovali muzstva

<?php
include_once ('config.php');
$abc = 1;
$kolo2 = 1;
$x = 1;
for ($i=1; $i<=12; $i++) {

      $sql = "
      SELECT *
      FROM uzivatelia
      WHERE id='$x'
      ";
        $query = mysql_query($sql);
while ($pozadavek = mysql_fetch_array($query)) {
$result = $pozadavek["nick"];
}
        $sql2 = "
      SELECT *
      FROM uzivatelia
      WHERE id='$i'
      ";
        $query2 = mysql_query($sql2);
        while ($pozadavek2 = mysql_fetch_array($query2)) {
$super = $pozadavek2["nick"];
}
if ($result != $super) {
if ($abc==1) {
echo "KOLO $kolo2<br>";
echo "$result : $super<br>"; 
$kolo = $kolo2 + 11;
echo "KOLO $kolo<br>";
echo "$super : $result<br>";
if ($kolo2 == 1) {$den = 1;}
if ($kolo2 == 2) {$den = 2;}
if ($kolo2 == 3) {$den = 3;}
if ($kolo2 == 4) {$den = 4;}
if ($kolo2 == 5) {$den = 5;}
if ($kolo2 == 6) {$den = 8;}
if ($kolo2 == 7) {$den = 9;}
if ($kolo2 == 8) {$den = 10;}
if ($kolo2 == 9) {$den = 11;}
if ($kolo2 == 10) {$den = 12;}
if ($kolo2 == 11) {$den = 15;}
if ($kolo == 12) {$den2 = 16;}
if ($kolo == 13) {$den2 = 17;}
if ($kolo == 14) {$den2 = 18;}
if ($kolo == 15) {$den2 = 19;}
if ($kolo == 16) {$den2 = 22;}
if ($kolo == 17) {$den2 = 23;}
if ($kolo == 18) {$den2 = 24;}
if ($kolo == 19) {$den2 = 25;}
if ($kolo == 20) {$den2 = 26;}
if ($kolo == 21) {$den2 = 29;}
if ($kolo == 22) {$den2 = 30;}

$sql_over2 = "SELECT * FROM zapasy WHERE tymA = '$result' AND tymB = '$super'";
$sql_over = "SELECT * FROM zapasy WHERE tymA = '$super' AND tymB = '$result'";
$query_zapas = mysql_query($sql_over);
$query_zapas2 = mysql_query($sql_over2);
$pocetRiadkov = mysql_num_rows($query_zapas);
$pocetRiadkov2 = mysql_num_rows($query_zapas2); 
if ($pocetRiadkov != 1 or $pocetRiadkov2 != 1) {
$sql_zapas = "INSERT INTO zapasy (tymA, tymB, den) VALUES ('$super', '$result', '$den')";
$sql_zapas2 = "INSERT INTO zapasy (tymA, tymB, den) VALUES ('$result', '$super', '$den2')";
$query_sql2 = mysql_query($sql_zapas2);
$query_sql = mysql_query($sql_zapas);
}
$abc=0;
}
else {
echo "KOLO $kolo2<br>";
echo "$super : $result<br>";
$kolo = $kolo2 + 11;
echo "KOLO $kolo<br>";
echo "$result : $super<br>";

if ($kolo2 == 1) {$den = 1;}
if ($kolo2 == 2) {$den = 2;}
if ($kolo2 == 3) {$den = 3;}
if ($kolo2 == 4) {$den = 4;}
if ($kolo2 == 5) {$den = 5;}
if ($kolo2 == 6) {$den = 8;}
if ($kolo2 == 7) {$den = 9;}
if ($kolo2 == 8) {$den = 10;}
if ($kolo2 == 9) {$den = 11;}
if ($kolo2 == 10) {$den = 12;}
if ($kolo2 == 11) {$den = 15;}
if ($kolo == 12) {$den2 = 16;}
if ($kolo == 13) {$den2 = 17;}
if ($kolo == 14) {$den2 = 18;}
if ($kolo == 15) {$den2 = 19;}
if ($kolo == 16) {$den2 = 22;}
if ($kolo == 17) {$den2 = 23;}
if ($kolo == 18) {$den2 = 24;}
if ($kolo == 19) {$den2 = 25;}
if ($kolo == 20) {$den2 = 26;}
if ($kolo == 21) {$den2 = 29;}
if ($kolo == 22) {$den2 = 30;}

$sql_over2 = "SELECT * FROM zapasy WHERE tymA = '$super' AND tymB = '$result'";
$sql_over = "SELECT * FROM zapasy WHERE tymA = '$result' AND tymB = '$super'";
$query_zapas2 = mysql_query($sql_over2);
$query_zapas = mysql_query($sql_over);
$pocetRiadkov = mysql_num_rows($query_zapas); 
$pocetRiadkov2 = mysql_num_rows($query_zapas2); 
if ($pocetRiadkov != 1 or $pocetRiadkov2 != 1) {
$sql_zapas = "INSERT INTO zapasy (tymA, tymB, den) VALUES ('$result', '$super', '$den')";
$sql_zapas2 = "INSERT INTO zapasy (tymA, tymB, den) VALUES ('$super', '$result', '$den2')";
$query_sql2 = mysql_query($sql_zapas2);
$query_sql = mysql_query($sql_zapas);
}
$abc=1;
}
if ($kolo2 == 12) {
$kolo2 = 1;
}
$kolo2++;
}
if ($x == 12 and $i == 12) {
break;
}
if ($i == 12) {
$i = 0;
$x++;
}
}
?>
SwimX
Profil
gogy27
jejdanánku, co to je?
slyšel jsi o switchi? edit: a o modulu? usandilo by to tvoji podmínku z 22 řádek na 6 myslím.
celkvoě se v tom prostě nevyznám.
gogy27
Profil
slysel slysel ale nejak to samo islo s tymi if a mne sa to robi lepsie s IF nejak si na switch nwm navyknut inac tu si to mozes pozriet http://c1rca.mgamecs.com/skuska.php nick: gogy heslo: patolog
tiso
Profil
gogy27 - celé to je na houby, chudák databázový server...
Robí sa to inak:
1. vytvoríš si registráciu tímov do ligy pre nadchádzajúcu sezónu (mesiac, nazvi si to ako len chceš)
2. po naplnení počtu zaregistrovaných týmov do počtu v lige môžeš spustiť rozlosovanie a vytvoriť zápasy (alebo k nejakému dátumu, ako len chceš)
body 1. a 2. máš možno v inom skripte, ide mi ale o komplexné vysvetlenie
Rozlosovanie:
3. vytiahneš si z databázy do poľa prihlásené týmy (1. sql dotaz)
4. toto pole skopíruješ do druhého a zamiešaš (shuffle)
5. v cykle na rozlosovanie týmov si poskladáš dotaz na hromadné vloženie zápasov do databázy (2. sql dotaz)
Zmestíš sa na 30 riadkov.
gogy27
Profil
tiso
1. a 2. tak ako hovoris mam inde
5. ako si to myslel ze sa zmestim do 30 riadkov? podla mna nestaci len premisat pretoze su tam rozne obmedzenia atd
gogy27
Profil
inac vsetko mi ide len
if ($kolo2 == 12) {
$kolo2 = 1;
}
$kolo2++;
tieto dve veci niekde musim dat pretoze pri prvom tyme mi prvy a posledny tym ich zapas neda ako 12 ale ako 1 a potom tym padom mam niektore z tymov v jednom kole 2. krat
tiso
Profil
gogy27 - tak nakoniec som sa trošku prepočítal, ten môj algoritmus funguje iba ak $pole1=$pole2.
Čiže:
3. vytiahneš si z databázy do poľa prihlásené týmy v náhodnom poradí (1. sql dotaz)
4. toto pole skopíruješ do druhého
5. v cykle na rozlosovanie týmov si poskladáš dotaz na hromadné vloženie zápasov do databázy (2. sql dotaz)
6. uložíš si vylosované zápasy do databázy
Toto celé(3.-6.) spolu s <?php, include a ?> okolo mám na 26 riadkov.
Joker
Profil
tiso
chudák databázový server...
No to teda. Jen do tabulky uživatelů se bude dělat 144 SQL dotazů, přitom by stačil jeden.

SwimX
jejdanánku, co to je?
slyšel jsi o switchi?

+1
Na tohle by ani switch nebyl potřeba. Ani to modulo by nebylo potřeba, stačilo by jen odčítání, řekl bych.
Ale nechápu tu logiku se $kolo a $kolo2...
- v $kolo2 je nějaké číslo od 1 do 12... po prvním "přetočení" pak od 2 do 12.
- do $kolo se uloží $kolo2 + 11 => v $kolo bude číslo od 12 do 23, po prvním "přetočení" tedy od 13 do 23.
Potom tedy minimálně první polovina podmínek (testující $kolo2) nemá vůbec žádný smysl, protože budou vzápětí přepsány druhou polovinou podmínek.
Například pokud $kolo2 je 1, $kolo bude 12. A tudíž $den bude 16.
Tzn. $den nebude nikdy menší než 16.
gogy27
Profil
Joker
joker ale je tam aj $den2 a to ide o to pretacanie zapasov ze ak budu hrat v prvom kole tym1 : tym2 tak o 11 kol neskor budu hrat tym2 : tym1

tiso
mohol by si mi ten script tu ukazat?
tiso
Profil
gogy27 - čo za to?
gogy27
Profil
tiso
co by si chcel? jaku mam istotu ze to bude fungovat?
tiso
Profil
gogy27 - 10 €, na vyskúšanie tu: http://tmp.tiso.sk/rozlosovanie.php
gogy27
Profil
tiso
keby ze som vedel heslo na internet banking aj by som ti to dal ale smola no :D
tiso
Profil
gogy27 - myslím že smola je na tvojej strane... Mne ide o princíp - urobiť to ide, tak ako som písal.
gogy27
Profil
tiso
oka mno diky za ochotu :) inac by som ti dal tie peniaze lebo uz nwm ako na to skusim daco si sam pozliepat
gogy27
Profil
tiso
to rozlosovanie si urobil tym shuffle?
gogy27
Profil
tiso
nechcel by si daco ine? lebo peniaze ti nemozem poslat :/
tiso
Profil
gogy27 - nie
Kcko
Profil
gogy27

http://www.tom-kot.cz/clanky/generovani-rozpisu-zapasu-v-systemu-kazdy-s-kazdym/
tiso
Profil
Kcko - pekné, ale uvádza tam nepravdivú informáciu - že algoritmus funguje s minimálnym počtom kôl. To ale nie je pravda. Pri nepárnom počte týmov totiž môj algoritmus ušetrí jedno kolo. Ten jeho algoritmus dodržiava rovnaký počet zápasov.
oksim
Profil
tiso nechces to zverejnit? tvoje je predsa len lepsie... :)
gogy27
Profil
oksim
ja si teraz upravujem ten Kckov a uplne v pohode to je ten skript :) dakujem
tiso
Profil
oksim - viď [#12]
oksim
Profil
gogy27
ked ho potom nejako rozumne upravis pls zverejni ho ... nesom nejaky extra php a dost by sa mi to zislo :)
oksim
Profil
tiso, som si vsimol ze to tvoje tiez nieje dokonale ... skus zadat 3 tímy...
tiso
Profil
oksim - fixed, neuvedomil som si že sa mi opakujú B týmy (v druhej polovici turnaja potom A týmy), takže [#20] neplatí.

Ešte porozmýšľam nad striedaním doma:vonku.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: