Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Odwrotne wyświetlenie wyników zapytania
konradkw
post 16.05.2012, 22:27:35
Post #1





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


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!

..

Ten post edytował konradkw 16.05.2012, 22:26:58
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Kostek.88
post 16.05.2012, 22:41:28
Post #2





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


Nie wiem, czy dobrze zrozumiałem... ale chyba wystarczy zamienić DESC na ASC w zapytaniu...
Go to the top of the page
+Quote Post
konradkw
post 16.05.2012, 22:43:41
Post #3





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


niestety wtedy wyświetli najstarszych 20 zamiast najnowszych.
Go to the top of the page
+Quote Post
johny_s
post 16.05.2012, 22:49:46
Post #4





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


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. ?>
Go to the top of the page
+Quote Post
konradkw
post 16.05.2012, 22:55:11
Post #5





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


wszystko świetnie działa tylko kolor zielony w linijce 9 nie działa - nawet bez tego # ... wiesz moze dlaczego?
Go to the top of the page
+Quote Post
Kostek.88
post 16.05.2012, 22:55:17
Post #6





Grupa: Zarejestrowani
Postów: 376
Pomógł: 47
Dołączył: 23.08.2007
Skąd: Warszawa

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


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

Ten post edytował Kostek.88 16.05.2012, 22:56:06
Go to the top of the page
+Quote Post
johny_s
post 16.05.2012, 22:59:26
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


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
Go to the top of the page
+Quote Post
konradkw
post 16.05.2012, 23:35:50
Post #8





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


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?

...
Go to the top of the page
+Quote Post
kpt_lucek
post 16.05.2012, 23:37:34
Post #9





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


[MYSQL] pobierz, plaintext
  1. "[...]`pole1` ASC, `pole2` DESC"
[MYSQL] pobierz, plaintext


Ten post edytował kpt_lucek 16.05.2012, 23:38:06


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
konradkw
post 16.05.2012, 23:39:45
Post #10





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


przepraszam kolego ale nie rozumiem ...
Go to the top of the page
+Quote Post
kpt_lucek
post 16.05.2012, 23:43:14
Post #11





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


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");


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
Go to the top of the page
+Quote Post
konradkw
post 16.05.2012, 23:54:14
Post #12





Grupa: Zarejestrowani
Postów: 131
Pomógł: 0
Dołączył: 31.05.2010

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


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?
Go to the top of the page
+Quote Post
kpt_lucek
post 17.05.2012, 00:12:12
Post #13





Grupa: Zarejestrowani
Postów: 428
Pomógł: 77
Dołączył: 10.07.2011
Skąd: Warszawa

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


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


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


Cytat
There is a Bundle for that
Lukas Kahwe Smith - October 31th, 2014
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 03:24