Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Sortowanie wynikow
mati19924
post
Post #1





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2011
Skąd: Książ WLKP

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


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' (IMG:style_emoticons/default/questionmark.gif)

Proszę nie pisać ze to jest łatwe ponieważ nie siedzę długo w php
Go to the top of the page
+Quote Post
Mackos
post
Post #2





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


Jeśli dobrze rozumiem to:

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


Ten post edytował Mackos 8.10.2011, 16:59:43
Go to the top of the page
+Quote Post
mati19924
post
Post #3





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2011
Skąd: Książ WLKP

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


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
Go to the top of the page
+Quote Post
cycofiasz
post
Post #4





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

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


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
Go to the top of the page
+Quote Post
mati19924
post
Post #5





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2011
Skąd: Książ WLKP

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


  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
Go to the top of the page
+Quote Post
Mackos
post
Post #6





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


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. }
Go to the top of the page
+Quote Post
mati19924
post
Post #7





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2011
Skąd: Książ WLKP

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


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...
Go to the top of the page
+Quote Post
Damonsson
post
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

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


Na moje prorocze oko w MySQL masz 'top' jako tekst, a nie liczby.
Go to the top of the page
+Quote Post
surma
post
Post #9





Grupa: Zarejestrowani
Postów: 11
Pomógł: 3
Dołączył: 19.01.2010

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


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
Go to the top of the page
+Quote Post
mati19924
post
Post #10





Grupa: Zarejestrowani
Postów: 15
Pomógł: 0
Dołączył: 14.04.2011
Skąd: Książ WLKP

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


Problem rozwiązany (IMG:style_emoticons/default/smile.gif) oczywiście również zrobiłem porządek w kodzie (IMG:style_emoticons/default/smile.gif) dziękuje za pomoc (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 27.08.2025 - 13:32