Помощ за класация!!!

afreto

New member
Здравейте. Имам един проблем който не мога да разареша. Гледах из други сайтове навръзвах кодове но все не ми се получава. Та проблема е следния. имам онлайн игра.искам да направя класация на потребителите според нивото (с това се справям , както и с страницирането на резултатите) но искам отпред да ми показва на кое място е.
Пример:
№ | име | ниво
--------------------
1 | пешо | 20
2 | иван | 15
3 | драган | 8
__
пред. {1},2,3 следв.

Също така да има една от опциите или в края на таблицата преди номерата на страниците да показва на кое място съм АЗ, като това да го показва на всяка страница
Пример:
№ | име | ниво | № | име | ниво
-------------------- | --------------------
1 | пешо | 20 | 10 | пешо | 7
2 | иван | 15 | 11 | иван | 5
3 | драган | 8 | 12 | драган | 4
... | ...
28 | АЗ | 2 | 28 | АЗ | 2
__ | __
пред. {1},2,3 следв. | пред. 1,{2},3 следв.

или да има бутон "къде съм аз" и като се кликне на него да показва таблица например от 10 играча и аз да съм по средата
Пример:
№ | име | ниво
--------------------
26 | пешо | 5
27 | иван | 3
28 | АЗ | 2
29 | пешо | 1
30 | иван | 1
__
пред. 1,{2},3 следв.


естествено трябва и да се помисли при еднакво ниво да подрежда по друг критерии но това в последствие.
Надявам се сте ме разбрали и да можете да ми помогнете
 
Re: Помощ за класация!!!

Справих се по следния начин:

PHP:
$x = 0; //почваме от нулева позиция
while ($row = mysql_fetch_array($result)) {
    $x++;
    if($row['user_id'] == $_SESSION['user_id'] {
         $_SESSION['my_position'] = $x; //на което превъртане, моето ID съвпадне с това базата данни при такова подреждане - това е моят ранк
         break; //вече може да спреш търсенето
    }
}
echo 'Моята позиция е ' . $_SESSION['my_position'];

Сега обаче изникна още един въпрос. как да подрежда по друг критерии (например: опит)ако са едно и също ниво.
 
Re: Помощ за класация!!!

Ma57eR каза:
Не може ли да направиш ранкването директно по опит, а не по ниво?
Ако не се нулира опита на всяко ново ниво, мисля че това е най-удачно като вариант.
Ами опитът се нулира щом стигне 100.
подреждането го направих така:
PHP:
ORDER BY `nivo` DESC, `opit` DESC
Идея е да не се нулира опитът мислил съм го, но не знам как при вдигане на 100 да дига и нивото. тоест знам ноне съм го пробвал все още:
PHP:
if ($opit>=$nivo*100) {$nivo++;}

Може и да има и по лесен начин но аз не се сещам.
 

Back
Горе