[PHP] Több toplista, egyszerűen, csak pár soros kóddal

Indította PHPradox, 2011 június 04, 06:28:56 DÉLUTÁN

Előző téma - Következő téma

PHPradox

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:

Powered by EzPortal