Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Sortowanie w petli while
Forum PHP.pl > Forum > Przedszkole
Komarek
Witam
Chcialbym sie dowiedziec jak moge zrobic sortowanie w petli while?

Problem jest taki ze nie sortuje wg jakiejs komorki w bazie...
mianowicie:

mam while wierszy w tabeli1, w funkcji while mam sprawdzanie z innych tabel wynikow dla innych osob i obliczenie ilosci procent osob posiadajacych dany wynik.
Tak wiec nie moge uzyc w zapytaniu sql ORDER BY poniewaz to po czym mam posegregowac obliczam dopiero pozniej.

Na przykladzie:

  1. $global_stats = mysql_query("SELECT * FROM `achsk_names`");
  2.  
  3. while($global_stat = mysql_fetch_assoc($global_stats))
  4. {
  5. $id = $global_stat['id'];
  6. $name = $global_stat['Name'];
  7.  
  8. $global_players_earned = mysql_query("SELECT COUNT(*) AS global_players_earned FROM `achsk_playerinfo` WHERE `Earned` = '1' AND `id` = '".$id."'");
  9. $global_earned = mysql_result($global_players_earned,0);
  10.  
  11. echo $id."-".$name."-".round($global_earned/$players2*100)."%";
  12. }


Jak moge posegregowac wyniki (id-name-X%) wedlug liczby % ? smile.gif
YaQzi
uh... :x

Możesz np zrobić sobie tablicę:
$tab[$id]['erned'] = $global_earned;
$tab[$id]['name'] = $name;

i posortować ją po wartości w erned... ale coś mi się wydaje, że można sobie taką posortowaną listę złożyć u Ciebie jednym zapytaniem do bazy...

...i coś mi się wydaje, że mniej więcej tak to będzie wyglądać:

  1. SELECT id, COUNT(*)/'.$players2.'*100 AS global_players_earned,
  2. (
  3. SELECT Name
  4. FROM achsk_names
  5. WHERE id = P.id
  6. )
  7. FROM achsk_playerinfo AS P
  8. WHERE Earned = 1
  9. GROUP BY id
  10. ORDER BY global_players_earned DESC
Komarek
Dzieki wielkie za zapytanie sql, dziala jak nalezy z wyjatkiem takim ze nie pokazuje mi rekordow dla ktorych Earned = NULL biggrin.gif Potrzebuje wyswietlac wszystko, ale segregowac tak jak podales ;]
YaQzi
do NULLa nie można używać =
jak już to Earned IS NULL
Komarek
Cytat(YaQzi @ 18.07.2011, 18:10:37 ) *
do NULLa nie mozna uzywac =
jak juz to Earned IS NULL


Nie o to mi chodzilo czy mozna uzywac = czy nie.
Nie umiescilem tego w tagach [code ] ani [php ] wiec nie chodzilo mi o sam sposob uzycia.

Jezeli jest zapytanie ktore podales a w nim jest WHERE Earned = 1, to wyswietla mi same wyniki w ktorych Earned = 1.
Chce zrobic tak byc wyswietlalo mi wszystkie wyniki z tym ze zaczynajac od tych ktorych % posiadania jest najwieksza.

jak to zrobic ?
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.