Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]Wyświetlenie rekordów z największą liczbą posortowanych po nazwie
michael_13
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 13.05.2007

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


Witam mam pewną tabelę zawierającą nazwę oraz liczbę wyświetleń, chciałbym z niej wyświetlić 10 rekordów z największą liczbą wyświetleń posortowanych alfabetycznie po nazwie. Zapytaniem:

  1. SELECT `nazwa`, `wyswietlenia`, `dane`
  2. FROM `tabela` ORDER BY `wyswietlenia`
  3. LIMIT 10

otrzymuję 10 rekordów z największą liczbą wyświetleń, tylko chciałbym żeby te rekordy były już posortowane alfabetycznie po nazwie (a nie po wyświetleniach), w jaki sposób to osiągnąć?

Pozdrawiam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
michael_13
post
Post #2





Grupa: Zarejestrowani
Postów: 13
Pomógł: 1
Dołączył: 13.05.2007

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


Wiec ogólne rozwiązanie to:

zapytanie:
  1. SELECT `id`, `nazwa`, `wyswietlenia`
  2. FROM `tabela` ORDER BY `wyswietlenia` DESC LIMIT 10


w PHP sortujemy po nazwie:
  1. <?php
  2. //$result - wynik zwrócony z zapytania
  3.  
  4. $counter = 0;//podstawowy indeks dla tablicy wielowymiarowej, dlaczego nie zastosować automatyc
    znego indeksa: $dane[] niech każdy sam sprawdzi
  5. while ($row = mysql_fetch_assoc($result))
  6. {
  7. $dane[$counter]['nazwa']=$row['nazwa'];
  8. $dane[$counter]['wyswietlenia']=$row['wyswietlenia'];
  9.  
  10. $nazwa[$counter]=$row['nazwa'];
  11. $wyswietlenia[$counter]=$row['wyswietlenia'];
  12. $id[$counter++]=$row['id'];
  13. }
  14. //mamy 4 tablice:
  15. //$dane - wielowymiarowa zawiera wszystkie dane, ją będziemy sortować według 3 pozostałyc
    h tablic
  16.  
  17. $nazwa = array_map('strtolower', $nazwa);//wielkość liter przy sortowaniu ma znaczenie więc wszystko z małych
  18.  
  19. array_multisort($nazwa, SORT_ASC, $wyswietlenia, $id, $dane);
  20.  
  21. //osiągnięty cel, gotowa posortowana tablica:
  22. print_r ($dane);
  23.  
  24. ?>


Cytat
Tak na dobrą sprawę, wyciągnięcie danych wielowymiarowych i skorzystanie z funkcji array_multisort() to rozwiązanie najbardziej optymalne.


Mam nadzieję, że masz racje, nie mam już czasu sprawdzać sposobu z dwoma zapytaniami (niby taki banał posortować a zajął mi tyle czasu..) więc zostanę przy takim sortowaniu.

Pozdrawiam.

Ten post edytował michael_13 24.03.2008, 13:48:21
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: 9.10.2025 - 16:31