
22.04.2008
Portál Španělský fotbal byl spuštěn, zatím probíhá testování více
06.03.2008
Pracuji na fotbalovém portálu zabývající se španělským fotbalem
12.01.2008
Dokončen fotbalový rezervační systém Profi Football více
08.01.2008
Spuštění modulu Eshopu pro firmu AZ-SportCzech více
04.01.2008
Dokončena prezentace firmy STRAIGHT CONSULT více


Je mi 26 let, bydlím v hlavním městě ČR. Webdesignem a programováním se zabývám již několik let ... více


nechapem
[131]
Jak zkopirovat? Vse podstatne mate v clanku, deklaraci funkce a jeji pouziti. Nic vic v tom neni
Dobrý den, potřeboval bych se zeptat, jestli by jste mi nemohl zkopírovat soubor uložený na vaší adrese http://www.rjwebdesign.net/…ss/index.php a poíslat mejlem. Nevím jak rozjet vaši RSS čtečku a s tímhle to mám jednodušší. Díky za odpověď.
[129] To bych nedelal, kdyby zmenili treba razeni men a napr. EURO by se z radku 5 presunulo na radek 8 tak by ti to nevyslo .. zkus to pres to pole, bude to univerzalnejsi
[128]jo dík, už jsem to vyřešil, sice ne přes pole, ale trošku kostrbatě přes číslo řádku měny
Neděle, 13 .Ledna 2008, 07:48, prečteno 497x
V tomto článku si ukážeme jak generovat fotbalovou tabulku. S menšimi úpravami můžeme samozřejme generovat nejenom fotbalovou tabulku ale i tabulku z dalších sportovních odvětví.
if(isset($_POST['do'])) { if($_POST['b1']==$_POST['b2']) { //remiza mysql_query("UPDATE tabulka SET r=r+1, gf = gf+$_POST[b1], ga = ga+$_POST[b2], pz=pz+1, body=body+1 WHERE id = '$_POST[1]'"); //prvni mysql_query("UPDATE tabulka SET r=r+1, gf = gf+$_POST[b1], ga = ga+$_POST[b2], pz=pz+1, body=body+1 WHERE id = '$_POST[2]'"); //druhy } elseif($_POST['b1']<$_POST['b2']) { //vyhral b2 mysql_query("UPDATE tabulka SET p=p+1, gf = gf+$_POST[b1], ga = ga+$_POST[b2],pz=pz+1 WHERE id = '$_POST[1]'"); //prvni mysql_query("UPDATE tabulka SET v=v+1, gf = gf+$_POST[b2], ga = ga+$_POST[b1], pz=pz+1, body=body+3 WHERE id = '$_POST[2]'"); //druhy } elseif($_POST['b1']>$_POST['b2']) { //vyhral b1 mysql_query("UPDATE tabulka SET v=v+1, gf = gf+$_POST[b1], ga = ga+$_POST[b2], pz=pz+1, body=body+3 WHERE id = $_POST[1]"); //prvni mysql_query("UPDATE tabulka SET p=p+1, gf = gf+$_POST[b2], ga = ga+$_POST[b1], pz=pz+1 WHERE id = $_POST[2]"); //druhy } }
Výhodou: je velmi rychlý výběr z DB
Nevýhodou: může být oprava údajů. Budeme si muset vytvořit další formulář a zpracující skript, který by nám zpětně odmazal / upravil data. Je to spousty zbytečného skriptovaní navíc.
Tento způsob spočívá v tom, že si vytáhnem z databáze všechny odehrané zápasy, poukládáme si data do pole ( rozhodovacími mechanismy zjistíme kdo měl kolik výher, remíz, proher atd. ) a výsledné pole zapíšeme do databáze za jednotlivé týmy.
function reCount() { $sql = "SELECT d_tym, h_tym, d_goly, h_goly, kontumace, trest1, trest2 FROM vysledky WHERE schvaleno = 2 AND id_souteze = $this->soutezID"; $msql = mq($sql); if (mnr($msql)) { // inicializace $this->init(&$data); while ($r = mfo($msql)) { // nastaveni promennych $domaci = $r->d_tym; $hoste = $r->h_tym; $g1 = $r->d_goly; $g2 = $r->h_goly; $kontumace = $r->kontumace; $trest1 = $r->trest1; $trest2 = $r->trest2; // vypocet // domaci vyhrali if ($g1 > $g2 && $kontumace != 3) { // nastavime domaci $data[$domaci]["pz"]++; $data[$domaci]["v"]++; //$data[$domaci]["r"]++; //$data[$domaci]["p"]++; $data[$domaci]["gf"] += $g1; $data[$domaci]["ga"] += $g2; $data[$domaci]["pts"] += 3; $data[$domaci]["trest"] += $trest1; // nastavime hosty $data[$hoste]["pz"]++; //$data[$hoste]["v"]++; //$data[$hoste]["r"]++; $data[$hoste]["p"]++; $data[$hoste]["gf"] += $g2; $data[$hoste]["ga"] += $g1; //$data[$hoste]["pts"] += 3; $data[$hoste]["trest"] += $trest2; } // vyhrali hoste elseif ($g1 < $g2 && $kontumace != 3) { // nastavime domaci $data[$domaci]["pz"]++; //$data[$domaci]["v"]++; //$data[$domaci]["r"]++; $data[$domaci]["p"]++; $data[$domaci]["gf"] += $g1; $data[$domaci]["ga"] += $g2; //$data[$domaci]["pts"] += 3; $data[$domaci]["trest"] += $trest1; // nastavime hosty $data[$hoste]["pz"]++; $data[$hoste]["v"]++; //$data[$hoste]["r"]++; //$data[$hoste]["p"]++; $data[$hoste]["gf"] += $g2; $data[$hoste]["ga"] += $g1; $data[$hoste]["pts"] += 3; $data[$hoste]["trest"] += $trest2; } // remiza elseif ($g1 == $g2 && $kontumace != 3) { // nastavime domaci $data[$domaci]["pz"]++; //$data[$domaci]["v"]++; $data[$domaci]["r"]++; //$data[$domaci]["p"]++; $data[$domaci]["gf"] += $g1; $data[$domaci]["ga"] += $g2; $data[$domaci]["pts"] += 1; $data[$domaci]["trest"] += $trest1; // nastavime hosty $data[$hoste]["pz"]++; //$data[$hoste]["v"]++; $data[$hoste]["r"]++; //$data[$hoste]["p"]++; $data[$hoste]["gf"] += $g2; $data[$hoste]["ga"] += $g1; $data[$hoste]["pts"] += 1; $data[$hoste]["trest"] += $trest2; } // kontumace pro oba elseif ($g1 == $g2 && $kontumace == 3) { // nastavime domaci $data[$domaci]["pz"]++; //$data[$domaci]["v"]++; //$data[$domaci]["r"]++; $data[$domaci]["p"]++; $data[$domaci]["gf"] += 0; $data[$domaci]["ga"] += 3; //$data[$domaci]["pts"] += 1; $data[$domaci]["trest"] += $trest1; // nastavime hosty $data[$hoste]["pz"]++; //$data[$hoste]["v"]++; //$data[$hoste]["r"]++; $data[$hoste]["p"]++; $data[$hoste]["gf"] += 0; $data[$hoste]["ga"] += 3; //$data[$hoste]["pts"] += 1; $data[$hoste]["trest"] += $trest2; } } // while end } // numrows > 0 ? } function insertData($data) { if (is_array($data)) { foreach ($data as $tymID => $pole) { $ins = "INSERT INTO tabulka_poradi SET "; $ins .= " id_tymu = $tymID, kolo = $this->round, id_souteze = $this->soutezID, pz = '{$data[$tymID]["pz"]}', v = '{$data[$tymID]["v"]}', r = '{$data[$tymID]["r"]}', p = '{$data[$tymID]["p"]}', gf = '{$data[$tymID]["gf"]}', ga = '{$data[$tymID]["ga"]}', pts = '{$data[$tymID]["pts"]}', trest = '{$data[$tymID]["trest"]}' "; //echo $ins . "<br />"; $ins = mq($ins); //echo mysql_error(); } } }
Výhoda: pořád se jedná o velmi rychlý počin a pokud se stane , že bychom nějaký zápas zrušili nebo mu potřebovali upravit výsledek, není nic jednoduššího než tabulku z DB vymazat a znovu ji přegenerovat.
Nevýhoda: pokud se bude jednat o větší množství zápasů ( tisíce položek), netuším co to udělá s pamětí, může dojít k alokaci paměti a shození stránky. Ja jsem generovával vždy několik desítek či stovek zápasů a neměl jsem problém. Další nevýhodu vidím v tom, že pokud si budete chtít tabulku zobrazovat po jednotlivých kolech, budete Vám databáze nepřijemně narůstat.
Všechno za Vás vyreší databáze
SELECT ts.nazev, ts.seo_nazev, tym, SUM(W) + SUM(R) + SUM(P) as zapasy, SUM(W) as vyhry, SUM(R) as remizy, SUM(P) as prohry, SUM(G1) as goly_vstrelene, SUM(G2) as goly_obdrzene, SUM(G1) - SUM(G2) as rozdil, SUM(W) * 3 + SUM(R) * 1 as body FROM ( SELECT id_domaci AS tym, SUM( IF ( g1 > g2, 1, 0 ) ) AS W, SUM( IF ( g1 = g2, 1, 0 ) ) AS R, SUM( IF ( g1 < g2, 1, 0 ) ) AS P, SUM( g1 ) AS G1, SUM( g2 ) AS G2 FROM vysledky WHERE schvaleno = '1' AND kolo <= $kolo AND id_souteze = $soutez GROUP BY tym UNION ALL SELECT id_hoste AS tym, SUM( IF ( g1 < g2, 1, 0 ) ) AS W, SUM( IF ( g1 = g2, 1, 0 ) ) AS R, SUM( IF ( g1 > g2, 1, 0 ) ) AS P, SUM( g2 ) AS G1, SUM( g1 ) AS G2 FROM vysledky WHERE schvaleno = '1' AND kolo <= $kolo AND id_souteze = $soutez GROUP BY tym ) TMP JOIN seznam_tymu as ts ON ts.ID = TMP.tym GROUP BY tym ORDER BY body DESC, rozdil DESC, goly_vstrelene DESC, zapasy DESC, nazev ASC
Výhoda: vše reší tento náročnější SQL dotaz. Neni složitý, jen trošku delší na napsání. Tímto vykreslíme tabulku do konkretního kola a není problém si zobrazit údaje z jiného kola. Pokud potřebujeme opravit zápas, opravujeme ho pouze v konkretní tabulce zápasu a o výsledné zobrazení se nestaráme. Takže časová úspora je myslím zřejmá.
Nevýhoda: bude v tom, že se bude databázový server více namáhat, než kdyby pouze tahal připravená data. On je musí počítat, setřídit a předložit. Pokud tabulku dobře osázíte indexy a těch zápasů tam nebudou tisíce ( žiju v domnění, že zobrazujeme tabulku z konkretní sézony kde proběhlo pár desítek či stovek zápasů), tak se nemusíme bát. Mám ješte složitejší dotaz, pospojováno více tabulek dohromady a výsledky jsou velmi slušné, rychlost je vždy kolem 0,005 s.
Sami si zvolte způsob, který se Vám nejvíce líbí. Tento článek není návodem, který pomocí copy & paste uvedete v pochod. Pokud znáte jiný způsob generování, vyjádřete se do komentáře.
| Hodnocení: | Počet hlasů: 10 |
Žádný komentář