2008. április 18., péntek

e107 - Aktuális szavazás eredményei

Régóta bántja a szemem, hogy az e107 szavazó pluginjében nem lehet megnézni az aktuális szavazás állását. A beállításoknál választható egy olyan opció, hogy megjelenít egy eredmények linket, de esze ágában sincs ilyen hivatkozást elérhetővé tenni.

Kipróbáltam, hogy létrehozok egy újabb szavazást (2.) és rákattintok a Korábbi Szavazások linkre. Ott az előző szavazás állását gyönyörű (azér' nem annyira) grafikonnal szemléltette. Na ekkor jelent meg az égő villanykörte a fejem felett: mivan akkor, ha ez a Korábbi Szavazások egyszerűen csak kilistázza a szavazásokat az utolsó kivételével???

A Korábbi Szavazások link az OLDPOLLS.PHP nevű fájlra mutat a szavazó plugin mappájában. Le is rántottam a szerverről és belenéztem...

Először elvégez pár beállítást, majd lefuttat egy lekérdezést, aztán egy újabb szakasz a kiíratás előtt érdekes sorokkal indul:

$array = $sql -> db_getList();
$oldpollArray = array_slice($array, 1);

Elemezzük csak!!! Még ha nem is értek a PHP-hez, akkor is ki lehet következtetni a változónevekből, hogy az első sor a lekérdezés eredményét teszi bele egy tömbbe, míg a második sorban a tömbbel végez el egy műveletet, majd az eredményt beleteszi egy másik tömbbe.

Hoppácska! Megvagy!

A google-ban rákerestem az array_slice() függvényre és láss csodát, az első találat:

array_slice() returns the sequence of elements from the array array as specified by the offset and length parameters.
...
If offset is non-negative, the sequence will start at that offset in the array.
...

Az offset a függvény második paramétere.
Tehát a második sor azt csinálja, hogy a lekérdezés eredményét a 2. (indexe 1.) sorától átmásolja abba a tömbbe amit kiirat! Innentől már nem nehéz a dolog: az 1-est írjuk át 0-ra!!!

$oldpollArray = array_slice($array, 0);

A javítás után a Korábbi Szavazások linkre kattintva az ÖSSZES szavazás eredményét megtekinthetjük!

Ez a cikkem felkerült az e107 Hungary oldalra is, amely a portálrendszer hivatalos magyar oldala.