Informatikai Barkács Fórum

WORLD OF WARCRAFT SZERVER => Web => A témát indította: PHPradox Dátum 2011 június 04, 06:28:56 DÉLUTÁN

Cím: [PHP] Több toplista, egyszerűen, csak pár soros kóddal
Írta: PHPradox Dátum 2011 június 04, 06:28:56 DÉLUTÁN
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:
(http://img24.imageshack.us/img24/9546/cica3.png)