Перейти к содержимому



Помогите настроить скрипт

#1 кипятильник

кипятильник
  • Пользователь
  • 102 сообщений
  • Репутация: 0
0

Отправлено 29 Январь 2009 - 19:53

Здравствуйте,
помогите настроить скрипт, непонятно некоторые имена
что не понял указал !!!!

<?php
////////////////////////////////////////////////////////////////////
/**
Class for navigating over multiple pages
*/
class PageNavigator{
//data members
private $pagename;
private $totalpages;
private $recordsperpage;!!!!
private $maxpagesshown;!!!!
private $currentstartpage;!!!!
private $currentendpage;!!!!!
private $currentpage;!!!!
//next and previous inactive
private $spannextinactive; !!!!
private $spanpreviousinactive; !!!!
//first and last inactive
private $firstinactivespan; !!!!
private $lastinactivespan; !!!!
//must match $_GET['offset'] in calling page !!!!!
private $firstparamname = "offset";
//use as "&name=value" pair for getting page
private $params;
//css class names
private $inactivespanname = "inactive";
private $pagedisplaydivname = "totalpagesdisplay";
private $divwrappername = "navigator";
//text for navigation
private $strfirst = "|<";
private $strnext = "Next";
private $strprevious = "Prev";
private $strlast = ">|";
//for error reporting
private $errorstring;
////////////////////////////////////////////////////////////////////
//constructor
////////////////////////////////////////////////////////////////////
public function __construct($pagename, $totalrecords, $recordsperpage, $recordoffset, $maxpagesshown = 4, $params = ""){
$this->pagename = $pagename;
$this->recordsperpage = $recordsperpage;
$this->maxpagesshown = $maxpagesshown;
//already urlencoded
$this->params = $params;
//check recordoffset a multiple of recordsperpage
$this->checkRecordOffset($recordoffset, $recordsperpage) or
die($this->errorstring);
$this->setTotalPages($totalrecords, $recordsperpage);
$this->calculateCurrentPage($recordoffset, $recordsperpage);
$this->createInactiveSpans();
$this->calculateCurrentStartPage();
$this->calculateCurrentEndPage();
}
////////////////////////////////////////////////////////////////////
//public methods
////////////////////////////////////////////////////////////////////
//give css class name to inactive span
////////////////////////////////////////////////////////////////////
public function setInactiveSpanName($name){
$this->inactivespanname = $name;
//call function to rename span
$this->createInactiveSpans();
}
////////////////////////////////////////////////////////////////////
public function getInactiveSpanName(){
return $this->inactivespanname;
}
////////////////////////////////////////////////////////////////////
public function setPageDisplayDivName($name){
$this->pagedisplaydivname = $name;
}
////////////////////////////////////////////////////////////////////
public function getPageDisplayDivName(){
return $this->pagedisplaydivname;
}
////////////////////////////////////////////////////////////////////
public function setDivWrapperName($name){
$this->divwrappername = $name;
}
////////////////////////////////////////////////////////////////////
public function getDivWrapperName(){
return $this->divwrappername;
}
////////////////////////////////////////////////////////////////////
public function setFirstParamName($name){
$this->firstparamname = $name;
}
////////////////////////////////////////////////////////////////////
public function getFirstParamName(){
return $this->firstparamname;
}
////////////////////////////////////////////////////////////////////
/**
Returns HTML code for the navigator
*/
public function getNavigator(){
//wrap in div tag
$strnavigator = "<div class=\"$this->divwrappername\">\n";
//output movefirst button
if($this->currentpage == 0){
$strnavigator .= $this->firstinactivespan;
}else{
$strnavigator .= $this->createLink(0, $this->strfirst);
}
//output moveprevious button
if($this->currentpage == 0){
$strnavigator .= $this->spanpreviousinactive;
}else{
$strnavigator.= $this->createLink($this->currentpage-1, $this->strprevious);
}
//loop through displayed pages from $currentstart
for($x = $this->currentstartpage; $x < $this->currentendpage; $x++){
//make current page inactive
if($x == $this->currentpage){
$strnavigator .= "<span class=\"$this->inactivespanname\">";
$strnavigator .= $x+1;
$strnavigator .= "</span>\n";
}else{
$strnavigator .= $this->createLink($x, $x+1);
}
}
//next button
if($this->currentpage == $this->totalpages-1){
$strnavigator .= $this->spannextinactive;
}else{
$strnavigator .= $this->createLink($this->currentpage + 1, $this->strnext);
}
//move last button
if($this->currentpage == $this->totalpages-1){
$strnavigator .= $this->lastinactivespan;
}else{
$strnavigator .= $this->createLink($this->totalpages -1, $this->strlast);
}
$strnavigator .= "</div>\n";
$strnavigator .= $this->getPageNumberDisplay();
return $strnavigator;
}
////////////////////////////////////////////////////////////////////
//private methods
////////////////////////////////////////////////////////////////////
private function createLink($offset, $strdisplay ){
$strtemp = "<a href=\"$this->pagename?$this->firstparamname=";
$strtemp .= $offset;
$strtemp .= "$this->params\">$strdisplay</a>\n";
return $strtemp;
}
////////////////////////////////////////////////////////////////////
private function getPageNumberDisplay(){
$str = "<div class=\"$this->pagedisplaydivname\">\nPage ";
$str .= $this->currentpage+1;
$str .= " of $this->totalpages";
$str .= "</div>\n";
return $str;
}
////////////////////////////////////////////////////////////////////
private function setTotalPages($totalrecords, $recordsperpage){
$this->totalpages = ceil($totalrecords/$recordsperpage);
}
////////////////////////////////////////////////////////////////////
private function checkRecordOffset($recordoffset, $recordsperpage){
$bln = true;
if($recordoffset%$recordsperpage != 0){
$this->errorstring = "Error - not a multiple of records per page.";
$bln = false;
}
return $bln;
}
////////////////////////////////////////////////////////////////////
private function calculateCurrentPage($recordoffset, $recordsperpage){
$this->currentpage = $recordoffset/$recordsperpage;
}
////////////////////////////////////////////////////////////////////
// not always needed but create anyway
////////////////////////////////////////////////////////////////////
private function createInactiveSpans(){
$this->spannextinactive = "<span class=\"".
"$this->inactivespanname\">$this->strnext</span>\n";
$this->lastinactivespan = "<span class=\"".
"$this->inactivespanname\">$this->strlast</span>\n";
$this->spanpreviousinactive = "<span class=\"".
"$this->inactivespanname\">$this->strprevious</span>\n";
$this->firstinactivespan = "<span class=\"".
"$this->inactivespanname\">$this->strfirst</span>\n";
}
////////////////////////////////////////////////////////////////////
// find start page based on current page
////////////////////////////////////////////////////////////////////
private function calculateCurrentStartPage(){
$temp = floor($this->currentpage/$this->maxpagesshown);
$this->currentstartpage = $temp * $this->maxpagesshown;
}
////////////////////////////////////////////////////////////////////
private function calculateCurrentEndPage(){
$this->currentendpage = $this->currentstartpage+$this->maxpagesshown;
if($this->currentendpage > $this->totalpages)
{
$this->currentendpage = $this->totalpages;
}
}
}//end class
////////////////////////////////////////////////////////////////////
?>

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 29 Январь 2009 - 23:04

кипятильник, привет ;) Ну что же... Начнём...
<?php

/*Класс для создания навигации*/

class PageNavigator{

private $pagename;
private $totalpages; // количество страниц
private $recordsperpage; // количество записей на одной странице

/* От меня, директива $maxpagesshown работает неправильно, сам менял */
private $maxpagesshown; // от выбранной страницы: показать $maxpagesshown слева и столько же справа

/* Высчитываются относительно $maxpagesshown */
private $currentstartpage; // начальная страница min = 1
private $currentendpage; // конечная страница max = последняя
private $currentpage; // текущий номер страницы
//next and previous inactive
private $spannextinactive; // неактивный span для NEXT(следующей)
private $spanpreviousinactive; // неактивный span для PREVIOUS(предыдущей)
//first and last inactive
private $firstinactivespan; // неактивный span для FIRST(первой)
private $lastinactivespan; // неактивный span для LAST(последней)

private $firstparamname = "offset"; // имя переменной, для GET массива с номером содержания текущей страницы
//use as "&name=value" pair for getting page
private $params;
//css class names
private $inactivespanname = "inactive";
private $pagedisplaydivname = "totalpagesdisplay";
private $divwrappername = "navigator";
//text for navigation
private $strfirst = "|<";
private $strnext = "Next";
private $strprevious = "Prev";
private $strlast = ">|";
//for error reporting
private $errorstring;
.........................
?>

  • 0

#3 кипятильник

кипятильник
    Topic Starter
  • Пользователь
  • 102 сообщений
  • Репутация: 0

Отправлено 30 Январь 2009 - 13:52

решил насроить вручную посмотреть е ни чего не увидел(((

private $pagename=1;
private $totalpages=10;
private $recordsperpage=10;
private $maxpagesshown=2;
private $currentstartpage=1;
private $currentendpage=10;
private $currentpage=1;
//next and previous inactive
private $spannextinactive="g";
private $spanpreviousinactive="g";
//first and last inactive
private $firstinactivespan="g";
private $lastinactivespan="g";
//must match $_GET['offset'] in calling page
private $firstparamname = "offset";
//use as "&name=value" pair for getting
private $params=1;
//css class names
private $inactivespanname = "inactive";
private $pagedisplaydivname = "totalpagesdisplay";
private $divwrappername = "navigator";
//text for navigation
private $strfirst = "|&lt;";
private $strnext = "Next";
private $strprevious = "Prev";
private $strlast = "&gt;|";
//for error reporting
private $errorstring="ALL";

  • 0

#4 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 31 Январь 2009 - 19:12

xD Так конечно, это только класс, его ещё нужно уметь использовать. Сначала нужно на его основе создать объект, а так же не забыть передать данные, их не нужно в классе задавать. Я присылал тебе ссылку на скачку примеров... Посмотри пример №9, там в файле index.php показано применение данного класса. Там работа с базами данных, в пример №8 работа с картинками(файлами)
/* подключаем файл с классом PageNavigator */
require_once "PageNavigator.php";
/* определение константы количества элементов на странице */
define("PERPAGE", 5);
$offset=@$_GET[OFFSET];
/* Если номер страницы не передан в адресной строке */
if (!isset($offset))
{
$recordoffset=0; // Тогда
}
else
{
	/* Высчитываем с какой записи начать(для БД) */
	$recordoffset=$offset*PERPAGE; // Иначе
}
/* Строка запроса в БД */
$strsql ="SELECT author, title ".
	"FROM tblbooks ".
	"WHERE sold = 0 AND cat ='$category' ". 
	"ORDER BY author LIMIT $recordoffset,". PERPAGE;
Как видим в конце SQL запроса есть LIMIT с_какой_записи, сколько
/*в примере ещё присутствует класс работы с базой данных*/
$totalrecords=$rs->getUnlimitedNumberRows(); //запрос, возвращающий количество строк во всей таблицы без LIMIT
$numpages = ceil($totalrecords/PERPAGE); /* Считаем общее количество страниц */
/* Если страниц больше чем 1 */
if($numpages>1){
  /* Создаём навигатор */
  /* PageNavigator(путь_к_странице, общее_кол-во_записей, Сколько_записей_выводить, С_какой записи, По_сколько_страниц_показывать_[справа и слева], другие_параметры); */
  $nav = new PageNavigator($pagename, $totalrecords, PERPAGE, $recordoffset, 4, $otherparameter);
  echo $nav->getNavigator();
}

  • 0


Оформление форума – IPBSkins.ru