Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Odwrotne wyświetlenie wyników zapytania
Forum PHP.pl > Forum > Przedszkole
konradkw
Witam ponownie!
szukałem na forum ale nie mogę znaleźć nic konkretnie odpowiadającego moim wymaganiom.

Potrzebuję wyświetlić powiedzmy 20 ostatnich (najnowszych) wierszy z tabeli i wyświetlić je tak aby najnowszy był u samego dołu listy a najstarszy z tej 20 na samej górze no i oczywiscie między nimi od dołu od najnowszego do najstarszego u góry.

aktualnie mam tak:

  1.  
  2. echo "<table>";
  3.  
  4.  
  5. $wyn = mysql_query ("SELECT * FROM `tabela` ORDER BY `data` DESC LIMIT 21");
  6. while ($row = mysql_fetch_array($wyn, MYSQL_ASSOC))
  7. {
  8.  
  9. echo "<tr><td>[ <small><font color=\"brown\"> ";
  10. echo $row['data'];
  11. echo " </font>- </small>";
  12. echo "<b> "; echo " <font color=\"#green\">";
  13. echo $row['autor'];
  14. echo " </font></b>]</td><td>";
  15. echo " : <b><font color=\"blue\">";
  16. echo $row['tresc'];
  17. echo "</font></b><br></td></tr>";
  18.  
  19. }
  20. echo "</table>";
  21.  
  22. ?>
  23.  



wszystko oczywiście działa świetnie ale wyświetla od góry do dołu chronologicznie. bardzo proszę o podpowiedź jak to odwrócić.... dziękuję z góry!

..
Kostek.88
Nie wiem, czy dobrze zrozumiałem... ale chyba wystarczy zamienić DESC na ASC w zapytaniu...
konradkw
niestety wtedy wyświetli najstarszych 20 zamiast najnowszych.
johny_s
Cytat(Kostek.88 @ 16.05.2012, 21:41:28 ) *
Nie wiem, czy dobrze zrozumiałem... ale chyba wystarczy zamienić DESC na ASC w zapytaniu...


nie do konca bo bedzie mial 21 pierwszych wynikow

@konradkw
  1. <?
  2. $text = '';
  3. while ($row = mysql_fetch_array($wyn, MYSQL_ASSOC))
  4. {
  5. $txt = '';
  6. $txt .= "<tr><td>[ <small><font color=\"brown\"> ";
  7. $txt .= $row['data'];
  8. $txt .= " </font>- </small>";
  9. $txt .= "<b> "; echo " <font color=\"#green\">";
  10. $txt .= $row['autor'];
  11. $txt .= " </font></b>]</td><td>";
  12. $txt .= " : <b><font color=\"blue\">";
  13. $txt .= $row['tresc'];
  14. $txt .= "</font></b><br></td></tr>";
  15. $text = $txt . $text;
  16. }
  17. echo $text;
  18. ?>
konradkw
wszystko świetnie działa tylko kolor zielony w linijce 9 nie działa - nawet bez tego # ... wiesz moze dlaczego?
Kostek.88
A może wrzucić wynik do tablicy, a potem ją posortować za pomocą ksort ?

  1. while ($row = mysql_fetch_array($wyn, MYSQL_ASSOC)) {
  2. $tablica_element[] = $row['data'];
  3. $tablica_element[] = $row['autor'];
  4. $tablica_element[] = $row['tresc'];
  5.  
  6. $tablica[] = $tablica_element;
  7. }
  8.  
  9. ksort($tablica);
  10.  
  11. echo "<table>";
  12. foreach($tablica as $element) {
  13. echo "<tr><td>[ <small><font color=\"brown\"> ";
  14. echo $element['data'];
  15. echo " </font>- </small>";
  16. echo "<b> "; echo " <font color=\"#green\">";
  17. echo $element['autor'];
  18. echo " </font></b>]</td><td>";
  19. echo " : <b><font color=\"blue\">";
  20. echo $element['tresc'];
  21. echo "</font></b><br></td></tr>";
  22. }
  23. echo "</table>";


questionmark.gif
johny_s
Cytat(konradkw @ 16.05.2012, 22:55:11 ) *
wszystko świetnie działa tylko kolor zielony w linijce 9 nie działa - nawet bez tego # ... wiesz moze dlaczego?

wywal echo i srednik daj kropke, sorry nie zauwazylem
konradkw
hehe ja tez nie zaoważylem .. smile.gif ju zmam super wszystko działa teraz

Kostek.88 tak jak johny_spodpowiedział działa dobrze - nie chce już mieszać... dzieki bardzo prosze Państwa! smile.gif))))

to mi jeszcze powiedzcie jak wyświetlić wpisy z ostatnich powiedzmy 15 minut tylko .. zakadając że wiersz ['data'] to TIMESTAMP - mogę dodać też TIME osobno jeśli to pomoże ...

w normalnej kolejności DESC .... tak jak mam na samym początku tematu

jeśli nie było wpisów przez 15 minut ostatnie chce żeby się nic nie wyświetlało ... jakieś propozycje?

...
kpt_lucek
[MYSQL] pobierz, plaintext
  1. "[...]`pole1` ASC, `pole2` DESC"
[MYSQL] pobierz, plaintext
konradkw
przepraszam kolego ale nie rozumiem ...
kpt_lucek
Mysql ma sam w sobie funkcje sortujące przecież, więc można z nich zrobić użytek
  1. $wyn = mysql_query ("SELECT * FROM `tabela` ORDER BY `data` DESC, `pole2` ASC LIMIT 21");
konradkw
no ten problem jest już chyba rozwiązany wyżej .. potrzebuje jeszcze zrobić to:

jak wyświetlić wpisy z ostatnich powiedzmy 15 minut tylko .. zakładając że wiersz ['data'] to TIMESTAMP - mogę dodać też TIME osobno jeśli to pomoże ...

jeśli nie było wpisów przez 15 minut ostatnie chce żeby się nic nie wyświetlało ... jakieś propozycje?
kpt_lucek
Jeżeli timestamp to liczba sekund to użyj zapytania w którym obecna data pomniejszona o 15 min jest mniejsza niż data wstawionych rekordów
  1. "WHERE `date` < '".(date("U") - 15*60)."' "


Jeżeli w innej formie (rrrr-mm-dd hh:mm:ss)
to to powinno pomóc : http://www.sitepoint.com/forums/showthread...our-on-my-Table
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.