SZUKANA FRAZA:

Stronnicowanie wartości z tablic w PHP

Data publikacji: 2007-05-18
Autor: Wave

Chcecie podzielić newsy na strony? Nic prostszego!



Oto skrypt podziału na strony wartości z tablic numerycznych (czyli [0] => 'news#1' [1] => 'news#2' [2] => 'news#3' itd.). Zachowuje on wszystkie zmienne z adresu w swoich linkach, dzięki czemu możemy go umieścić dosłownie gdzie chcemy. Kilka przykładów jego zastosowań znajdziecie poniżej.

<?
////
// Stronnicowanie v1.2 by Wave
// wave at snug dot pl
// All rights Reserved
////

// $newsy = array('News1', 'News2', 'News3'); itd...

$tresc = $newsy; // W tych dwch miejscach naley wpisa nazw tablicy
unset ( $newsy ); //
$ile = 10; // Ile wynikw na strone

$stron = max( ceil ( count ( $tresc ) / $ile ), 1 ); // Obliczamy ilo wszystkich stron
$page = strip_tags($_GET[ 'page' ]); // Pobieramy numer strony z adresu
if( !is_numeric ( $page ) ) $page = 1;

function view ( $start, $end ) { // Wywietlanie
global $tresc, $ile, $stron, $page;
$self = !empty( $_SERVER['QUERY_STRING'] ) ? preg_replace ( '#\?page=(.*)&?#i', '?', preg_replace ( '#&page=(.*)#i', '', $_SERVER['REQUEST_URI'] ) ) : FALSE;
$php_self = $_SERVER['PHP_SELF'];
if( $self{ strlen ( $self ) -1 } == '?' ) $self = FALSE;

for ( $a = $start; $a < $end; $a++ ) {

echo ( $tresc[ $a ].'<br>' ); // Fragment odpowiedzialny za wywietlanie - modyfikuj dowolnie

}

echo ( '<a title="Id do pierwszej strony" href="'.( $self ? ($self.'&page=1') : ($php_self.'?page=1') ).'"><<</a>&nbsp;<a title="Id do poprzedniej strony" href="' . ( $self ? ( $self .'&page='. ( !empty ( $page ) ? ( min ( max ( $page-1, 1 ), $stron ) ) : 1 ) . ' ') : ( $php_self ) . '?page=' . ( !empty ( $page ) ? ( min ( max ( $page-1, 1 ), $stron ) ) : 1 ) . ' ' ) . '"><</a> Strona ' . ( !empty ( $page ) ? ( min( max($page, 1), $stron ) ) : 1 ) . ' z ' . $stron . ' <a title="Id do nastpnej strony" href="' . ( $self ? ( $self . '&page=' . ( !empty ( $page ) ? ( min ( max ( $page+1, 1 ), $stron ) ) : 2 ) . ' ' ) : ( $php_self ) . '?page=' . ( !empty ( $page ) ? ( min ( max ( $page+1, 1 ), $stron ) ) : 2 ) . ' ' ) . '">></a>&nbsp;<a title="Idź do ostatniej strony" href="'.( $self ? ($self.'&page='.$stron) : ($php_self.'?page='.$stron) ).'">>></a>' );
return FALSE;
}

if ( count ( $tresc ) <= $ile ) view( 0, count ( $tresc ) );
else if ( isset ( $page ) && $page <= $stron && $page > 1 ) view ( $ile * ( $page - 1), $ile * $page);
else view ( 0, $ile );
?>

Jak podzielić na strony linie z pliku?

Wystarczy na początku skryptu umieścić linię:

$newsy = file('nazwa_pliku.txt');
I w niezmienionej formie skopiować powyższy skrypt (oczywiście można ustawić ilość wyświetlanych linijek na jednej stronie).

Jak podzielić na strony długi tekst ze zmiennej?

Należy tak jak poprzednio wstawić poniższe linie na początek:

$ile = 500; // Określa ile znaków ma się pokazać na stronie
$temp = wordwrap( $dlugi_tekst, $ile, '...<!-- koniec strony -->' ); // Co podaną liczbę znaków wstawiamy znacznik komentarza
$newsy = explode( '<!-- koniec strony -->', $temp ); // Dzielimy tekst na tablicę

Proszę pamiętać, żeby w tym przypadku tekst nie był formatowany znacznikami HTML, gdyż może to spowodować błędne wyświetlanie.