Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Stronicowanie danych
Forum PHP.pl > Forum > PHP
programista28
witam mam taki oto kod ktory stanowi sobie funkcje stronicowania


  1. <?php
  2.  
  3. $od=0;
  4. $do=$wynik;
  5. $ile = 0;
  6.  
  7.  
  8.  
  9. $ile=$_GET['numer'];
  10.  
  11.  
  12. for($i=0;$i<10;$i++){
  13.  
  14.  
  15.  
  16.  
  17.  
  18. echo "<a href=\"pager2.php?od=$od&do=$do&numer=$ile&wynik=$wynik&wybrany=$wyraz\" >$ile</a>";
  19.  
  20. $ile++;
  21. }
  22.  
  23.  
  24. ?>


wszystko dziala jak nalezy


wyswietla sie strony 123456789 i mozna sobie przechodzic dalej po stronach i wszystko jest ok jesli chodzi o zwiekszanie wyniku posuwanie sie do przodu a co jesli chcialbym sie cofnac

chodzi o to by funkcja dzialala identycznie jak w google (to znaczy cofala sie rowniez do tylu kiedy klikne pierwsze piec wynikow przenosi mnie na poprzednie wyniki )nie wiem jak sie za to zabrac ma ktos jakis pomysl ?








IceManSpy
W zależności od strony robisz offset czyli taki +/- ileś stron. Jesteś np na 12 stronie to robisz -4 i + 4 czyli masz od 8 do 16.

P.S. Nie rób tyle enetrów cool.gif
Robert3d
Ja to robię tak
że dziele sobie całe stronicowanie na 3 części a wiec LEWĄ ŚRODKOWĄ PRAWĄ

Lewa są to wyniki dla stron poprzednich
ŚRODKOWA aktualny wynik i wystarczy przepisać ID z GET
PRAWA wyniki z prawej strony czyli dla następnych.

Mamy więc 3 rzeczy do obliczenia.
ŚRODEK JUZ MAMY

Pozostają nam dwie rzeczy PRAWA i LEWA strona.
Są one identyczne lecz inne logicznie i arytmetycznie a więc zamiast < dajemy > zamiast + dajemy - itd.
Jak to zrobić
Musimy znać kilka zmiennych ile ma pojawić się przed i po środkowym (to ta sama zmeinna) oraz rzecz jasna ID
  1. private function obliczNumeryPo($strona, $iloscZaIPrzed, $iloscPodstron ){
  2.  
  3. while($strona < $iloscPodstron && $iloscZaIPrzed > 0){
  4. $strona++;
  5. $iloscZaIPrzed--;
  6. $tablica[$strona] = $strona;
  7. }
  8. return $tablica;
  9. }


Tutaj jeszcze dodaj dla odwrotnego ksort(); i będzie hulać



lukaskolista
Czytajac Wasz kod przerazilem sie...

  1. $elementy = 2000; // Ilosc wszystkich wynikow
  2. $strony = ceil($elementy / 15); // Ilosc stron zaokraglona w gore (KONIECZNIE w gore)
  3. $aktualna = 50; // Aktualna strona
  4. $min = (($aktualna - 5) >= 0 ? ($aktualna - 5) : 0); // Strona o najmniejszym numerze do wyswietlenia
  5.  
  6. for ($i = $aktualna; $i >= $min; $i--)
  7. {
  8. ...
  9. }
Mowicie ze proste obliczenia ale nie potraficie ich porzednie wykonac.
Kod jest oczywiscie dla stron przed aktualna strona, dla stron po analogicznie.
Swoja droga o paginacji w necie (na tym forum rowniez) jest bardzo duzo informacji.

@Robert3d
Po co przepisujesz to do jakichs tablic? Po co odwrotne sortowanie?
programista28
No to wszystko jasne swoja droga bardzo proste rozwiazanie spodziewalem sie czegos o wiele bardziej skomplikowanego.Mysle ze jest to najprostszy poradnik stronicowania jaki istnieje smile.gif


WIELKIE DZIEKI ZA POMOC
Robert3d
lukaskolista - Chciałem mieć pełną kontrole a że jest to metoda klasy a nie funkcja to tak jakoś wyszło wink.gif
lukaskolista
Cytat
lukaskolista - Chciałem mieć pełną kontrole a że jest to metoda klasy a nie funkcja to tak jakoś wyszło
Jest takie powiedzenie "Co ma piernik do wiatraka?"
Robert3d
zwykłem odpowiadać mąka smile.gif I wcale nie twierdze że moje czy twoje rozwiązanie itd.

Pozdrawiam
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.