Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Sortowanie wyników zaczynając od największego.
Forum PHP.pl > Forum > Przedszkole
myszapl
  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.
RiE
Zamiast desc uzyj asc
myszapl
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źć ?
RiE
  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?
myszapl
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.
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.