Szerző Téma: [PHP] Több toplista, egyszerűen, csak pár soros kóddal  (Megtekintve 2156 alkalommal)

PHPradox

  • Vendég
[PHP] Több toplista, egyszerűen, csak pár soros kóddal
« Dátum: 2011 Június 04, 07:28:56 pm »
Az alábbi leírás bemutatja hogy hogyan tudunk egyszerre több toplistát csinálni, anélkül hogy több SQL lekérést írnánk. Mivel ilyen rendes fickó vagyok, megosztok Veletek pár trükköt, melyeket "kifejlesztettem" a WoW-os cuccokhoz.

1. Írjuk meg a függvényt, ami lekéri nekünk a legjobb játékosokat egy szempont alapján, majd ezeket bepakolja egy tömbbe

function LegjobbJatekosok($szempont, $limit){
    $helyezes = 1;
    $legjobbak = mysql_query('SELECT name, '.$szempont.' FROM characters
    ORDER BY '.$szempont.' DESC LIMIT 0, '.$limit.'');
    while($eredmeny = mysql_fetch_assoc($legjobbak))
        $lista[$helyezes++] = $eredmeny;
    return $lista;
}

A függvénynek 2 adatot adunk át. Azt, hogy milyen oszlop (azaz szempont) alapján rangsorolja a játékosokat, valamint hogy hány játékost kérjünk le. Utána megadjuk a kezdő helyezést és elvégezzük a lekérést. S végül egy WHILE ciklussal belepakoljuk a LISTA nevű tömb változóba az adatokat, valamint átadjuk a tömb indexének a rangot.

2. Hívjuk meg a függvényt, és jelenítsük meg a TOP 5 honor ponttal rendelkező játékost, egy sima listába

foreach(LegjobbJatekosok('totalHonorPoints', 5) as $helyezes => $adatok)
    $alegjobbhonorosok[] = ''.$helyezes.'. <b>'.$adatok['name'].' ('.$adatok['totalHonorPoints'].')</b>';
echo implode(', ', $alegjobbhonorosok);

A kód persze még sok minden mással is kiegészíthető. Hozzáteszem a változóneveket SOHA nem írom magyarul, kivéve most, ugyanis azt szeretném ha mindenki dolgozna vele egy kicsit, azért hogy tanuljon. Tehát, ez egy kiváló támpont annak, aki szeretne toplistákat.

Javaslatok
     - Írjatok egy MySQL kezelő osztályt az oldalatokhoz
     - A lekért tömböt dolgozzátok fel egy szép táblázatba
     - Írjátok át a változókat angol nyelvűre, a lehető legrövidebb formába (pl.: topchars, topdata ... stb)

Ezzel a pár soros kóddal, ilyen eredményt kaphatunk:
« Utoljára szerkesztve: 2011 Június 04, 09:05:29 pm írta ToMa3757 »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27