Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Stronicowanie/paginacja tablicy.
klapaucius
post
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
 
Start new topic
Odpowiedzi
Robert3d
post
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

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 22:23