Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Stronicowanie danych, problem ze stronicowaniem
programista28
post 18.11.2011, 20:46:38
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 2
Dołączył: 14.05.2011

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


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 ?








Go to the top of the page
+Quote Post
IceManSpy
post 18.11.2011, 22:32:08
Post #2





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


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

Ten post edytował IceManSpy 18.11.2011, 22:32:35


--------------------
Go to the top of the page
+Quote Post
Robert3d
post 19.11.2011, 01:41:59
Post #3





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


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ć



Go to the top of the page
+Quote Post
lukaskolista
post 19.11.2011, 11:02:16
Post #4





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


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?

Ten post edytował lukaskolista 19.11.2011, 11:03:57
Go to the top of the page
+Quote Post
programista28
post 19.11.2011, 12:41:56
Post #5





Grupa: Zarejestrowani
Postów: 88
Pomógł: 2
Dołączył: 14.05.2011

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


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
Go to the top of the page
+Quote Post
Robert3d
post 19.11.2011, 15:01:33
Post #6





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


lukaskolista - Chciałem mieć pełną kontrole a że jest to metoda klasy a nie funkcja to tak jakoś wyszło wink.gif

Ten post edytował Robert3d 19.11.2011, 15:02:11
Go to the top of the page
+Quote Post
lukaskolista
post 20.11.2011, 08:58:45
Post #7





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


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?"
Go to the top of the page
+Quote Post
Robert3d
post 20.11.2011, 20:03:02
Post #8





Grupa: Zarejestrowani
Postów: 102
Pomógł: 3
Dołączył: 22.04.2006

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


zwykłem odpowiadać mąka smile.gif I wcale nie twierdze że moje czy twoje rozwiązanie itd.

Pozdrawiam
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: 12.06.2025 - 13:43