Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dzielenie Długiego tekstu na kilka podstron
czarek1986
post 15.09.2008, 23:58:47
Post #1





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Mam  pytanie. Czy da się w php automatycznie dzielić tekst na stronie który jest dość długi,na kilka podstron tak aby w danym momencie wyswietlala sie tylko np polowa tekstu a druga polowa bedzie dostepna na drugiej podstronie, przy czym podstrony byly by dostepne za pomocą numerowanych linkow pod tekstem? Jesli jest to możliwe to jak to zrobić. Na forum znalazłem tylko opis jak zrobic taki podzial tylko przy wczytywaniu wielu rekordów z bazy danych.
Go to the top of the page
+Quote Post
peter13135
post 16.09.2008, 06:37:28
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


nieznajm sie na tym, ale wydaje mi sie że to powinno być tak

  1. <?
  2. $text_len=strlen($text);
  3. //załóżmy że ma dzielić co tysiąc znaków
  4. $num_page=ceil($text_len/1000);//to jest liczba stron
  5.  
  6. //no a potem to już niewiem ;]
  7. ?>


Ten post edytował batman 16.09.2008, 07:47:39
Powód edycji: dodałem bbcode ~batman


--------------------
:)
Go to the top of the page
+Quote Post
mefjiu
post 16.09.2008, 07:22:47
Post #3





Grupa: Zarejestrowani
Postów: 313
Pomógł: 5
Dołączył: 22.03.2005

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


Cytat
//no a potem to już niewiem ;]


A no potem to musisz napisać skrypcik stronicowania w necie ejst tego pełno wpisz w google np "stronicowanie php"
Go to the top of the page
+Quote Post
barthpl
post 16.09.2008, 08:45:45
Post #4





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


W sumie nigdy takiego czegoś jeszcze nie robiłem ale mój prosty pomysł jest następujący (oczywiście przy założeniu, że mamy sam tekst):
  1. <?php
  2. $marker = '<!--BREAK PAGE-->'; // marker sygnalizujący podział strony;
  3. // wstawienie markera w miejscu w którym strona powinna się skończyć;
  4. $tmpText = wordwrap( $srcText, $pageLength, $marker );
  5. $pages = explode( $markerm $tmpText ); // podział na strony;
  6. $pagesNo = count( $pages ); // liczba stron;
  7. ?>

No i teraz powiedzmy masz adres w postaci http://mojadomena.pl?artykul=1&page=2 to wyświetlasz zawartość tabeli $pages na przykład tak:
  1. <?php
  2. $pageNo = $_GET['page']-1;
  3. if( $pageNo < 0 || $pageNo > $pagesNo -1 )
  4.    $pageNo = 0;
  5. echo pages[$pageNo];
  6. ?>

A ponieważ dysponujesz numerem strony jak i ilością wszystkich stron to możesz sobie w łatwy sposób zrobić pasek nawigacyjny (podobnie jak w przypadku tabeli).


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
--czarek1986--
post 16.09.2008, 10:21:33
Post #5





Goście







A co oznacza zmienna PageLenght?
Go to the top of the page
+Quote Post
czarek1986
post 16.09.2008, 10:35:05
Post #6





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


No i jeszcze jedno. Dlaczego Mam używać funkcji wordwrap? czy skrypt nie bedzie dzialal bez niej?
Go to the top of the page
+Quote Post
barthpl
post 16.09.2008, 12:18:48
Post #7





Grupa: Zarejestrowani
Postów: 142
Pomógł: 35
Dołączył: 5.12.2006
Skąd: Wrocław

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


Cytat(-czarek1986- @ 16.09.2008, 11:21:33 ) *
A co oznacza zmienna PageLenght?
Zmienna określa ilość znaków na stronie, co prawda w przybliżeniu ponieważ wordwrap" title="Zobacz w manualu PHP" target="_manual ma opcję dzielenie tekstu bez urywania wyrazów. Zatem na stronie będzie $pageLength znaków +/- długość wyrazu który znajduje się w "tej" okolicy...


Cytat(czarek1986 @ 16.09.2008, 11:35:05 ) *
No i jeszcze jedno. Dlaczego Mam używać funkcji wordwrap? czy skrypt nie bedzie dzialal bez niej?
No w jakiś sposób musisz podzielić tekst, nieprawdaż? Wordwrap jest użyte w celu wykrycia miejsca podziału strony (dzielenia dokonuje funkcja explode). Możesz to rozwiązać na jeszcze parę innych sposobów, jak na przykład: za pomocą substr, lub innych pokrewnych funkcji. Wordwrap jest o tyle fajny że automatycznie dba o to aby nie połamać ci wyrazów.


--------------------
Jeżeli pomogłem rozwiązać Twój problem, kliknij pomógł.
Go to the top of the page
+Quote Post
czarek1986
post 18.09.2008, 00:49:22
Post #8





Grupa: Zarejestrowani
Postów: 72
Pomógł: 0
Dołączył: 15.09.2008

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


Wykorzystałem po części twój pomysł i wszystko działa. Wielkie dzięki
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: 1.07.2025 - 13:00