Autor Zpráva
unlucky
Profil
Ahoj,
skript přídává výsledky her do 3 tabulek, MATCHES, GROUPS, RESULTS.
matches obsahuje id 2 týmů a jejich výsledky
groups obsahuje informace o týmech a jejich výsledky
results obsahuje podrobné informace her mezi členy. Každé utkání má 7 her (5 dvouher, 2 čtyřher)

Tabulky jsou už takto navržené a ke skriptu má přístup jenom admin, takže není zapotřebí nějak ošetřit vstupní data.
Jak tento skript zrychlit či vylepšit?
if (!empty($_POST['add'])){
//update match results
mysql_query("update matches set score1=$_POST[scorea], score2=$_POST[scoreb], done=1 where id=$_POST[matchidz]");

//Update groups set wins-lose
mysql_query("update groups set win=win+$_POST[scorea], lose=lose+$_POST[scoreb], points=points+$_POST[pointsa] where id=$_POST[nhaidz]");
//doi khach
mysql_query("update groups set win=win+$_POST[scoreb], lose=lose+$_POST[scorea], points=points+$_POST[pointsb] where id=$_POST[khachidz]");

//Update member wins/lose member table 16 query
mysql_query("update members set solo_win=solo_win+$_POST[points11], solo_lose=solo_lose+$_POST[points12] where id=$_POST[p11]"); //tr1 p1
mysql_query("update members set solo_win=solo_win+$_POST[points12], solo_lose=solo_lose+$_POST[points11] where id=$_POST[p12]"); //tr1 p2

mysql_query("update members set solo_win=solo_win+$_POST[points21], solo_lose=solo_lose+$_POST[points22] where id=$_POST[p21]"); //tr2 p1
mysql_query("update members set solo_win=solo_win+$_POST[points22], solo_lose=solo_lose+$_POST[points21] where id=$_POST[p22]"); //tr2 p2

mysql_query("update members set duo_win=duo_win+$_POST[points31], duo_lose=duo_lose+$_POST[points32] where id=$_POST[p31]"); //tr3 p1
mysql_query("update members set duo_win=duo_win+$_POST[points31], duo_lose=duo_lose+$_POST[points32] where id=$_POST[p32]"); //tr3 p2
mysql_query("update members set duo_win=duo_win+$_POST[points32], duo_lose=duo_lose+$_POST[points31] where id=$_POST[p33]"); //tr3 p1
mysql_query("update members set duo_win=duo_win+$_POST[points32], duo_lose=duo_lose+$_POST[points31] where id=$_POST[p34]"); //tr3 p1



mysql_query("update members set solo_win=solo_win+$_POST[points41], solo_lose=solo_lose+$_POST[points42] where id=$_POST[p41]"); //tr4 p1
mysql_query("update members set solo_win=solo_win+$_POST[points42], solo_lose=solo_lose+$_POST[points41] where id=$_POST[p42]"); //tr4 p2

mysql_query("update members set solo_win=solo_win+$_POST[points51], solo_lose=solo_lose+$_POST[points52] where id=$_POST[p51]"); //tr5 p1
mysql_query("update members set solo_win=solo_win+$_POST[points52], solo_lose=solo_lose+$_POST[points51] where id=$_POST[p52]"); //tr5 p2

mysql_query("update members set duo_win=duo_win+$_POST[points61], duo_lose=duo_lose+$_POST[points62] where id=$_POST[p61]"); //tr6 p1
mysql_query("update members set duo_win=duo_win+$_POST[points61], duo_lose=duo_lose+$_POST[points62] where id=$_POST[p62]"); //tr6 p2
mysql_query("update members set duo_win=duo_win+$_POST[points62], duo_lose=duo_lose+$_POST[points61] where id=$_POST[p63]"); //tr6 p3
mysql_query("update members set duo_win=duo_win+$_POST[points62], duo_lose=duo_lose+$_POST[points61] where id=$_POST[p64]"); //tr6 p4



mysql_query("update members set solo_win=solo_win+$_POST[points71], solo_lose=solo_lose+$_POST[points72] where id=$_POST[p71]"); //tr7 p1
mysql_query("update members set solo_win=solo_win+$_POST[points72], solo_lose=solo_lose+$_POST[points71] where id=$_POST[p72]"); //tr7 p2


//add 7 results result table 7 query
mysql_query("insert into results (member1, member2, member3, member4, points1, points2, match_id) values 
('$_POST[p11]','0','$_POST[p12]','0','$_POST[points11]','$_POST[points12]','$_POST[matchidz]').
('$_POST[p21]','0','$_POST[p22]','0','$_POST[points21]','$_POST[points22]','$_POST[matchidz]'),

('$_POST[p31]','$_POST[p32]','$_POST[p33]','$_POST[p34]','$_POST[points31]','$_POST[points32]','$_POST[matchidz]'),

('$_POST[p41]','0','$_POST[p42]','0','$_POST[points41]','$_POST[points42]','$_POST[matchidz]'),
('$_POST[p51]','0','$_POST[p52]','0','$_POST[points51]','$_POST[points52]','$_POST[matchidz]'),

('$_POST[p61]','$_POST[p62]','$_POST[p63]','$_POST[p64]','$_POST[points61]','$_POST[points62]','$_POST[matchidz]'),

('$_POST[p71]','0','$_POST[p12]','0','$_POST[points71]','$_POST[points72]','$_POST[matchidz]') ");
}
Kcko
Profil
unlucky:
Proč je potřeba to zrychlovat? To jsou jednorázové akce, které se nedějí při načtení stránky nebo zápasu, ale když se nějaký zápas ukládá ne?
Kdysi sem načrtl řešení rjwebdesign.cz/blog/PHP/20080113-Generovani-Nejen-Fotbalove-Tabulky (to tvoje je 1), můžeš se vydat i další cestou 2 nebo 3)
unlucky
Profil
Kcko:
protože se už se mi párkrát stalo, že se update nevydařil. Sice se neobjevil žádný error, ale data v databázi zůstala stejná. Přemýšlím, zda není error kvůli:

1) default value NULL
2) příliš mnoho update- query
3) jsem zapomněl data vložit


ps: blog jsem si přečetl, všechny jednotlivé zápasy jsou uložené do RESULTS, takže v případě potřeby bych si je mohl znovu vytáhnout a počítat
Kcko
Profil
unlucky:
Ano, ten první způsob jsem používal když jsem "začínal" protože je nejsnažší na vytvoření a pochopení.

Nejlepší dle mého je 2ka. Můžeš za běhu generovat tabulku a je to rychlé, nebo si kdykoliv snadno tabulku přepočítat a do DB uložit už vypočítané řádky (body, branky atd).
Keeehi
Profil
unlucky:
Sice se neobjevil žádný error,
Tak to bude hlavně tím, že si nikde žádnou chybu nevypisuješ. Pokud to nefunguje jen někdy, tak musíš přijít na to, v jakých případech to nefunguje. Zjevná chyba tu vidět není, takže budeš muset počkat, až se to znovu stane.

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:

0