Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dzielenie Długiego tekstu na kilka podstron
Forum PHP.pl > Forum > Przedszkole
czarek1986
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.
peter13135
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. ?>
mefjiu
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"
barthpl
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).
-czarek1986-
A co oznacza zmienna PageLenght?
czarek1986
No i jeszcze jedno. Dlaczego Mam używać funkcji wordwrap? czy skrypt nie bedzie dzialal bez niej?
barthpl
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.
czarek1986
Wykorzystałem po części twój pomysł i wszystko działa. Wielkie dzięki
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.