Jak sprawdzić pozycje w bazie mysql


(Konradnie1) #1

Witam.

Mam w bazie danych tabele id, nazwa, ranking.

1-Jaś-530

2-Karol-2100

3-Jan-1800

I jak na stronie wyświetlić pozycje Jasia??

Wiem jak to zrobić wyświetlając wszystkie rekordy posortowane ale jak nie chce wyświetlać wszystkich rekordów tylko sprawdzić pozycje konkretnego usera??

Niech ktoś pomoże.


(adpawl) #2
SELECT ranking FROM tabela WHERE id=1

(Konradnie1) #3

Ale w tabeli ranking każdy user ma ileś punktów które zdobywa i ia chce sprawdzić które miejsce ma dany user np Jaś


(userrpl) #4

Będziesz to pobierał do PHP, czy tylko z ciekawości chcesz podglądnąć w bazie?


(Konradnie1) #5

Chce wyświetlić na stronie.

Jak ktoś się zaloguje to żeby było napisane:

Twoja pozycja w rankingu: pozycja


(userrpl) #6

To zacznij od pobrania rekordów względem największej ilości punktów.

SELECT `nazwa`,`ranking` FROM `twoja nazwa tabeli` ORDER

by `ranking` desc;

Potem pobierasz sobie to do tablicy i wyświetlasz.


(Pablo_Wawa) #7

Tu masz rozwiązanie tego problemu: http://blog.adiasz.pl/2011/12/09/numerowanie-listy-zwracanych-rekordow-w-mysql/


(userrpl) #8

Załóżmy, że masz pobraną tablice numeryczną o nazwie $array_user z samymi nazwami userów za pomocą tego zapytania:

SELECT `nazwa`` FROM `twoja nazwa tabeli` ORDER

by `ranking` desc;

Następnie stosujesz na tej tablicy numerycznej funkcje array_keys()

$positions_user = array_keys ($array_user, 'Jaś');


 if ($positions_user[0] == 0)
  {
   echo 'Jesteś 1 w rankingu';
  }
  else
  { 
   echo 'Jesteś '.$positions_user[0].' w rankingu'; 
  }[/code]

(Konradnie1) #9

A moze być tak:

$result=mysql_query("SELECT nazwa FROM `user` ORDER BY 'ranking' DESC");

if(!empty($result))

{

$num = mysql_num_rows($result);

}

else

{

$num = 0;

}

$i=0;

while ($i < $num) 

{

$nazwa=mysql_result($result,$i,"nazwa");

if($nazwa==$login)

{

  echo"$i";

}

$i++;

}

Czy to jest poprawny i wydajny kod?? Nie znam się na mysql dlatego nie wiem jak to pobrac.