Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sortowanie wynikow
Forum PHP.pl > Forum > Przedszkole
mati19924
a więc mam taki mały problem, siedzę już nad tym parę godzin i nie wiem jak to w końcu przerobić ;/

  1. function show_top($from) {
  2. $q = "SELECT `number`, `name`, `top` FROM `ggczat_top_417453` ORDER by `top` DESC LIMIT 10";
  3. $q = mysql_query($q);
  4. $i = 1;
  5. $agr = gg_range($from);
  6. while($user = mysql_fetch_row($q)) {
  7. $ile = top_ile($user[0]);
  8. $gr = gg_range($user[0]);
  9. if($gr == 9) $SA = '^';
  10. else if($gr == 8) $SA = '@';
  11. else if($gr == 7) $SA = '';
  12. else if($gr == 6) $SA = '#';
  13. else if($gr == 5) $SA = '!';
  14. else if($gr == 4) $SA = '*';
  15. else if($gr == 3) $SA = '~';
  16. else if($gr == 2) $SA = '%';
  17. else if($gr == 1) $SA = '+';
  18. else $SA = '';
  19. $names .= "\r\n$i. <".$SA.$user[1]."> -- $ile wypowiedzi";
  20. $i++;
  21. }
  22. return "** Lista top 10-ciu userow **".$names;
  23. }


jak przerobić tą funkcję żeby sortowała mi wyniki od największej do najmniejszej wykorzystując 'top' questionmark.gif

Proszę nie pisać ze to jest łatwe ponieważ nie siedzę długo w php
Mackos
Jeśli dobrze rozumiem to:

  1. $q = "SELECT `number`, `name`, `top` FROM `ggczat_top_417453` ORDER by `top` ASC LIMIT 10";
mati19924
niestety dalej mam balagan...


Cytat
** Lista top 10-ciu userow **
1. <paulina> -- 16 wypowiedzi
2. <^Mati> -- 17 wypowiedzi
3. <test> -- 19 wypowiedzi
4. <@Kamil25> -- 30 wypowiedzi
5. <sexuualnaczekoo> -- 40 wypowiedzi
6. <^Hentny> -- 47 wypowiedzi
7. <@CzekoladkA> -- 6 wypowiedzi
8. <^Venusx3> -- 8 wypowiedzi

Ty ^Mati napisales(as) 17 wypowiedzi
cycofiasz
Piszesz bardzo niejasno w moim mniemaniu.

Określ dokładnie według czego i jak ma być posortowany wynik SQL'a. Nie pisz znów że 'top' bo obecnie wykorzystujesz to pole a i tak twierdzisz że jest źle.
Wklej też treść funkcji top_ile
mati19924
  1. function top_ile($from){
  2. $q = "SELECT top FROM ggczat_top_417453 WHERE `number`='$from'";
  3. $q = mysql_query($q);
  4. $q = @mysql_result($q, 0, 'top');
  5. if(!empty($q)) return $q; else return 0;
  6. }


chce zeby sortowalo mi od najwiekszej wartosci do najmniejszej wartosci wg pola top
Mackos
Cytat(cycofiasz @ 8.10.2011, 18:43:31 ) *
Nie pisz znów że 'top' bo obecnie wykorzystujesz to pole a i tak twierdzisz że jest źle.

Hej no chyba kolega cycofiasz napisał dość jasno.
Wydaje mi się że w funkcji top_ile powinno być:
  1. function top_ile($from){
  2. $q = "SELECT top FROM ggczat_top_417453 WHERE `number`='$from'";
  3. $q = mysql_query($q);
  4. if(!empty($q[0])) return $q[0]; else return 0;
  5. }
mati19924
to moze inaczej skoro nie rozumiecie... chodzi mi zeby funkcja sortowala wyniki wg ilosci wypowiedzi tzn od najwiekszej ilosci wypowiedzi do najmniejszej ilosci wypowiedzi a liczbe wypowiedzi danego usera pobiera z pola 'top' prosciej juz sie nie da tego wytlumaczyc...
Damonsson
Na moje prorocze oko w MySQL masz 'top' jako tekst, a nie liczby.
surma
Ale to jest bez sensu, że wykorzystujesz jakąś osobną funkcje do pobrania danych, które już wcześniej pobrałeś.

W show_top() daj
  1. $ile = $user[2];

zamiast
  1. $ile = top_ile($user[0]);

podobnie z gg_range()

i wywal też
  1. $agr = gg_range($from);
które nie jest wykorzystywane w show_top() i niepotrzebnie obciąża baze danych
mati19924
Problem rozwiązany smile.gif oczywiście również zrobiłem porządek w kodzie smile.gif dziękuje za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.