[PHP] Punktacja za quiz

0

A, więc zrobiłem quiz. Po jego zakończeniu zliczane są poprawne odpowiedzi i zapisywane do tabelki w SQL, która wygląda tak:

id (primary key)
id_odpowiadajacego (int)
punktacja (int)

Gdy ktoś skończy quiz wyświetla mu się liczba zdobytych punktów. Chcę także zrobić, aby wyświetlało listę użytkowników jacy brali już w nim udział i ich punktacji (im więcej ktoś zdobył punktów tym jest wyżej), ale nie całą, a jedynie 20 rekordów, które znajdują się najbliżej punktacji jaką zdobył obecny użytkownik (10 lepszych i 10 gorszych wyników). Jednak wyświetlona lista powinna zaczynać się od miejsca globalnego jakie zdobyli użytkownicy, a nie od 1.

Zamieszałem za bardzo? Oto przykład:
Użytkownik zdobył pewną liczbę punktów w quizie. Po dopisaniu ich do tabeli i wyciągnięciu wyników zapytaniem:

SELECT * FROM quiz ORDER BY punktacja DESC

Okazuje się, że jest na 40 miejscu. Chciałbym jednak, aby wyniki zostały wyświetlone jedynie od 30 do 50 miejsca, ale żeby było widać, że to wyniki z tych miejsc.

Pomocy, bo się głowię drugi dzień i nie mogę wpaść na pomysł.

0

generalnie użyj LIMIT.

musisz mieć miejsce użytkownika wyciągasz selectem np:
SELECT count(*) FROM quiz WHERE punktacja>punktacja_uzytkownika

Potem:

$ofset=punktacja_uzytkownika-10; //oczywiście trzeba obsluzyc sytuacje typu użytkownik jest pierwszy albo ostatni

SELECT * FROM quiz ORDER BY punktacja DESC LIMIT $ofset, $ilosc_miejsc_do_wyswietlenia

1 użytkowników online, w tym zalogowanych: 0, gości: 1