Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]SELECT i zmiana kolejności wyników
Forum PHP.pl > Forum > Przedszkole
maniek99
Pobierając dane za pomocą:
  1. SELECT id,nazwa FROM `tn` WHERE 1 ORDER BY `id` DESC LIMIT 20

dostaję 20 ostatnich rekordów, ale są one źle poukładane, gdyż wyświetlając je za pomocą:
  1. [php]while($row = mysql_fetch_array($result)) ...

jako pierwszy pojawia mi się ostatni wynik z tabeli (który jednak jest pierwszym w pobranym zbiorze), a chciałbym żeby było odwrotnie.
Jak zmienić kolejnośc elementów w wynikowej tablicy ?
maniek99
  1. $sql = "SELECT ... ";
  2. $result = mysql_query($sql);
  3. $result = array_rewerse($result);


W tej konwencji to nie działa.
nospor
array_reverse działa na tablicy a nie na wyniku mysql_query..... ludzie, czytajcie manuala!
Thorang Hoog
Nie będzie działać. $result nie jest tablicą. Zawiera wyniki z zapytania do MySQL.

  1. $sql = "SELECT ... ";
  2. $result = mysql_query($sql);
  3. // Można to zrobić za pomocą while
  4. while ($row = mysql_fetch_assoc($result)) { // Pętla działa dopóki z zapytania można wyciągnąć poszczególny wiersz zapytania
  5. $wynik [] = $row; // Zapis wiersza do tablisy $wynik
  6. }
  7.  
  8. $wynik = array_rewerse($wynik); // odwrócenie listy wyników
  9.  


Można też zrobić to wszystko za pomocą pętli for

  1. // $i zawiera liczbę wierszy do pobrania
  2. for ( $i = mysql_affected_rows ( $identyfikator_polaczenia ) ; $i > 0 ; $i -- ){
  3. $wynik [] = mysql_fetch_assoc($result);
  4. }


mysql_fetch_assoc ( $result ) pobiera wiersz jako tablica gdzie nazwa klucza jest równa nazwie pola w wierszu bazy danych
nospor
Poza tym, problem można rozwiązać na etapie zapytania, bez mieszania w to php

  1. SELECT * FROM (SELECT id,nazwa FROM `tn` ORDER BY `id` DESC LIMIT 20) AS pod ORDER BY pod.id ASC
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.