Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP + MySQL] Sortowanie :P, Małe sortowanko rekordów.
Mescam
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 21.08.2007

Ostrzeżenie: (0%)
-----


Witajcie.

Mam sobie taką małą bazę danych, gdzie są trzy pola.
ID <-- Id usera
suma <-- suma "czegośtam" usera
rank <-- o tym za chwilę

Tabela ma w sobie kilku userów o różnych wartościach w polu "suma"
Teraz chciałbym przeprowadzić ranking za pomocą pola rank.
Czyli: Nie wiem jak napisać w php/mysql skrypt, który sortuje rekordy pod względem wartości pola "suma", od największego do najmniejszego, i jego pozycje zapisuje do pola rank.


Pomożecie? (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Z góry dziękuję i pozdrawiam

Ten post edytował Mescam 27.08.2007, 11:07:28
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
drPayton
post
Post #2





Grupa: Zarejestrowani
Postów: 890
Pomógł: 65
Dołączył: 13.11.2005
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


Wszystko działa poprawnie zgodnie z kodem. Słuchaj:
Deklarujesz zmienną start z początkową wartością 1. Najpierw ją zwiększasz o jeden, a dopiero potem wpisujesz do bazy. Czyli nadawanie "rank'u" zaczynasz od 2!
Trochę się zamotałem czytając ten ostatni post, ale chyba wiem o co biega, więc:
  1. <?
  2.  
  3. $start = 1;
  4.  
  5. $query = mysql_query("SELECT * FROM users ORDER BY suma DESC");
  6.  
  7. while ($row = mysql_fetch_assoc($query)){
  8. $id = $row['ID'];
  9.  
  10. if(< $row['suma']) { // Przy założeniu, że pole suma w bazie jest typu liczbowego!
  11. mysql_query("UPDATE users SET `rank`= {$start} WHERE `ID` = {$id}");
  12. $start++;
  13. } else {
  14. mysql_query("UPDATE users SET `rank`= 0 WHERE `ID` = {$id}");
  15. }
  16.  
  17. }
  18.  
  19. ?>

W ten sposób nadasz kolejno rosnące wartości rank dla userów, dla których suma jest > 0, i rank == 0, dla tych, gdzie suma jest = 0.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 18.10.2025 - 06:49