Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sortowanie wyników zaczynając od największego.
myszapl
post 22.02.2011, 21:06:22
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.02.2011

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


  1. $perPage = 5;
  2. $page = (int)$_GET['page'];
  3. if (is_numeric($page)) {
  4. if ($page < 1) {
  5. $page = 1;
  6. }
  7. } else {
  8. $page = 1;
  9. }
  10.  
  11. $max_id = db_query("SELECT COUNT(*) FROM `txts`");
  12. $iksde = mysql_fetch_row($max_id);
  13. echo $iksde['0']; // zrobiłem, by wypisywał dla pewności ile wynosi największe id w tabeli
  14. $start = $iksde['0'] - ($page * $perPage);
  15. $q = db_query("SELECT `id`, `txt` FROM `txts` ORDER by `id` desc LIMIT $start, $perPage ");
  16. while ($rec = mysql_fetch_row($q)) {
  17. echo '<table border=1>';
  18. echo '<tr><td>bla bla</td>
  19. </td><td>'. $rec[0] .'</td><td>'.$rec[1].'</td></tr>';
  20. echo '</table>';
  21. }
  22. $prev = $page + 1;
  23. $next = $page - 1;
  24. $prevLink = ''.$adres.'new/'. $prev;
  25. $nextLink = ''.$adres.'new/'. $next;
  26. echo "<p align='center'><a href='$prevLink'> Previous Page</a> | <a href='$nextLink'>Next Page</a></p>";


W skrócie tak to wygląda.
Przy analizowaniu kodu pomińcie wszystkie zmienne, tzn. to, że mogę być nieoznaczone - wszystko z nimi jest okej, oraz połączenia do mysql itp.

Opis: Jest sobie taki pseudo skrypt stronicowania, który przy wyciąganiu id od dołu po odpowiednim skonfigurowaniu[inny niż wyżej kod] (od id=1 w górę) wszystko ładnie dzieli na strony.
Problem: Jak go zmusić, by segregował, a raczej dzielił mi rekordy począwszy od największego do najmniejszego z limitem wyznaczonym przez $perPage?
Innymi słowy stronicowanie od max a nie od min id.
Z góry dziękuję za pomoc.

Ten post edytował myszapl 22.02.2011, 21:07:40
Go to the top of the page
+Quote Post
RiE
post 22.02.2011, 21:15:22
Post #2





Grupa: Zarejestrowani
Postów: 97
Pomógł: 45
Dołączył: 5.05.2010

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


Zamiast desc uzyj asc
Go to the top of the page
+Quote Post
myszapl
post 22.02.2011, 21:19:52
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.02.2011

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


Przy użyciu DESC pokazuje mi 5 pierwszych rekordów ( od 5 do 1 ).
Jak użyję ASC pokazuje mi też 5 rekordów, ale 5 ostatnich ( np. od 1000->1005 ).

editt...
dobra, pomyłka była w htaccess.
sprawa wygląda tak :
Jeśli mam ?page=1 i DESC to wyświetla mi rekordy ale w kolejności od 5->1.
Gdy zwiększam page to samo się dzieje, 10-6 itd.
Jeśli mam ?page=1 i ASC to wyświetla od 1084-1088 (gdzie liczba 1088 to największe id)
Gdy zwiększę page -> wyświetla od 1079-1083 itd.

Jak to ugryźć ?


Ten post edytował myszapl 22.02.2011, 21:34:41
Go to the top of the page
+Quote Post
RiE
post 22.02.2011, 21:30:50
Post #4





Grupa: Zarejestrowani
Postów: 97
Pomógł: 45
Dołączył: 5.05.2010

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


  1. if ($page < 1) {
  2. $page = 1;
  3. }
  4. } else {
  5. $page = 1; // Nie powinno tu byc przypadkiem $_get['page'];
  6. }
  7. ...
  8. $prev = $page + 1;
  9. $next = $page - 1;
  10. //A tu na odwrot?
Go to the top of the page
+Quote Post
myszapl
post 22.02.2011, 21:37:07
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 19.02.2011

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


Co do pierwszego komentarza - Nie, gdyż ustalam z góry, że jeśli $page nie jest cyfrą to i tak przydzielam tej zmiennej 5.
Drugi : Zgadza się, zamieniłem.
Ale problem jest wyżej ^. Patrz mój post wyżej.

SOLVED =>
zamieniłem na:

  1. $start = ($page - 1) * $perPage;
  2.  
  3. $q = db_query("SELECT `id`, `txt` FROM `txts` ORDER by `id` DESC LIMIT $start, $perPage ");


i gra.

Ten post edytował myszapl 22.02.2011, 21:46:36
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: 28.06.2025 - 19:11