Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Stronicowanie/paginacja tablicy.
klapaucius
post 18.11.2011, 23:36:36
Post #1





Grupa: Zarejestrowani
Postów: 223
Pomógł: 3
Dołączył: 4.07.2009
Skąd: Kraków

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


Witam. Mam taki oto skrypt w php:

  1. $zmienna = array (1=>"wartosc1", 2=>"wartosc2", 3=>"wartosc3", 4=>"wartosc4", 5=>"wartosc5", 6=>"wartosc6"); // jakaś zmienna tablicowa
  2. $n = count($zmienna);
  3. for ($i=0;$i<$n; $i++){
  4. $wyswietl = $zmienna[$i];
  5. echo $wyswietl;
  6. }

Chcę jednak zrobić do tego stronicowanie... Szukałem na internecie ale wszędzie jest pokazane stronnicowanie np. rekordów z mysql, a nigdzie nie ma stronicowania tablic...

Chcę, aby wyświetlało mi np. tylko 3 elementy na 1 stronie. Jak to zrobic? I oczywiscie jak zrobić, żeby na dole był pasek i można było przechodzić między stronami.

Ten post edytował klapaucius 18.11.2011, 23:37:44
Go to the top of the page
+Quote Post
Robert3d
post 19.11.2011, 01:59:23
Post #2





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

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


Nie ma znaczenia skąd są dane dane są i już.
Co ma znaczenie to ile wierszy mają dane u ciebie reprezentujesz to funkcją count();

Mamy zatem ilość danych. powiedzmy 8 wierszy.

Dalej dzielimy 8 wierszy przez liczbę wyświetlanych
powiedzmy 2 wiersze.

Zatem 8 przez 2 daje nam 4 podstrony po 2 wiersze.

mamy zatem
  1. $iloscWierszy = 8;
  2. $iloscPodstron = 4;
  3. $informacji=2;


A więc wiemy że potrzebujemy ID czyli naszą aktualną stronę.
Jak ją uzyskać?

A no
  1. ID*$informacji

Zatem na drugiej podstronie znajdą się dane

  1. 2*2 a więc 4

Widzimy błąd dlaczego? bo dane jadą nie od zera.
A więc
  1. (ID - 1) * 2 daje nam 0
  2. (ID - 1) * 2 daje nam 2
  3. (ID - 1) * 2 daje nam 4
  4. (ID - 1) * 2 daje nam 6


A więc zgadza się.

Co dalej?

By wypisać wyniki

  1. while (powtórz 2 razy)



I NAWIGACJA NA STRONIE akurat pisałem to w innym poście a więc przekleje i tutaj

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.  
  2.  
  3. private function obliczNumeryPo($strona, $iloscZaIPrzed, $iloscPodstron ){
  4.  
  5. while($strona < $iloscPodstron && $iloscZaIPrzed > 0){
  6. $strona++;
  7. $iloscZaIPrzed--;
  8. $tablica[$strona] = $strona;
  9. }
  10. return $tablica;
  11. }



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

Ten post edytował Robert3d 19.11.2011, 02:33:39
Go to the top of the page
+Quote Post
wujek2009
post 19.11.2011, 08:52:35
Post #3





Grupa: Zarejestrowani
Postów: 350
Pomógł: 31
Dołączył: 23.05.2010

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


ale kombinujecie - http://php.net/manual/en/function.array-slice.php
jeśli chodzi o paginacje tablicy ;-)
Go to the top of the page
+Quote Post
Robert3d
post 19.11.2011, 14:44:10
Post #4





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

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


wujek a skąd mi to znać biggrin.gif Tom się rozpisał ale z drugiej strony przynajmniej napisałem taki ogólny wzór smile.gif ale z 3 strony dobrze wiedzieć że taka funkcja istnieje smile.gif
Go to the top of the page
+Quote Post
xxdrago
post 19.11.2011, 15:14:56
Post #5





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Ciekawa funkcja u nas na forum:

http://forum.php.pl/index.php?showtopic=82...=php+sortowanie


--------------------
GG: 10972302 :)
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.04.2025 - 08:17