Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]SELECT i zmiana kolejności wyników
maniek99
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 22.03.2013

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


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 ?

Ten post edytował maniek99 17.04.2013, 11:47:55
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
matiit
post
Post #2





Grupa: Zarejestrowani
Postów: 365
Pomógł: 70
Dołączył: 5.04.2009

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


http://php.net/manual/en/function.array-reverse.php
Go to the top of the page
+Quote Post
maniek99
post
Post #3





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 22.03.2013

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


  1. $sql = "SELECT ... ";
  2. $result = mysql_query($sql);
  3. $result = array_rewerse($result);


W tej konwencji to nie działa.
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




array_reverse działa na tablicy a nie na wyniku mysql_query..... ludzie, czytajcie manuala!


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Thorang Hoog
post
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 9
Dołączył: 8.02.2009

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


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

Ten post edytował Thorang Hoog 17.04.2013, 13:13:42
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 04:50