stal-sw
27.07.2003, 20:46:36
W przegladarce po uruchomieniu skryptu mam taki adres:
http://localhost/wzor/index.php?go=foto&s=...0-%20Śląsk%20df - i chce aby ten adres byl w linku ktory robi ten skrypt w miejscu zamiast
$this->getPageName()
Jak go pobrac

?
[php:1:43a5548025]<?php
$prev = "<a href="" . $this->getPageName() . "?page=" . $this->getPrevious() . "">Prev</a> | ";
?>[/php:1:43a5548025]
spenalzo
27.07.2003, 22:36:58
Nie wiem dokładnie o co chodzi, ale adres bieżącego skryptu można uzyskać tak:
[php:1:e65ccfcfdf]<?php
echo $HTTP_SERVER_VARS["PHP_SELF"]."?".$HTTP_SERVER_VARS["QUERY_STRING"];
?>[/php:1:e65ccfcfdf]
scanner
28.07.2003, 06:56:04
Lub całkiem nowocześnie:[php:1:06f237ac82]<?php
echo $_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];
?>[/php:1:06f237ac82]spenalzo nie napisal nic złego, tylko użył starszego zapisu.
stal-sw
28.07.2003, 10:29:37
Oki dziala to rozwiazanie 149 linijka w kodzie - jednak mam jeszcze problem gdy uzywam ponizszej clasy do porcjowania. Mainowicie pobiera mi adres z przegladarki ale gdy wezme nastepne strony to w adresie jest http://...........&page=2&page=3&page=4
Jak zrobic aby po odpaleniu skryptu pobralo 1 raz adres (wtedy w adresie nie ma page=..... )a gdy bede wybieral nastepne strony to aby bylo zapisywane http://......&page=2, jak wezme 3 strone to http://......&page=3 - > czyli aby mi caly czas nie dopisywalo do adresu kolejnych stron.
[php:1:bac31c702c]==============================================================
===
class Paginator {
//all variables are pivate.
var $previous;
var $current;
var $next;
var $page;
var $total_pages;
var $link_arr;
var $range1;
var $range2;
var $num_rows;
var $first;
var $last;
var $first_of;
var $second_of;
var $limit;
var $prev_next;
var $base_page_num;
var $extra_page_num;
var $total_items;
var $pagename;
//Constructor for Paginator. Takes the current page and the number of items
//in the source data and sets the current page ($this->page) and the total
//items in the source ($this->total_items).
function Paginator($page,$num_rows)
{
if(!$page)
{
$this->page=1;
} else {
$this->page=$page;
}
$this->num_rows=$num_rows;
$this->total_items = $this->num_rows;
}
//Takes $limit and sets $this->limit. Calls private mehods
//setBasePage() and setExtraPage() which use $this->limit.
function set_Limit($limit=5)
{
$this->limit = $limit;
$this->setBasePage();
$this->setExtraPage();
}
//This method creates a number that setExtraPage() uses to if there are
//and extra pages after limit has divided the total number of pages.
function setBasePage()
{
$div=$this->num_rows/$this->limit;
$this->base_page_num=floor($div);
}
function setExtraPage()
{
$this->extra_page_num=$this->num_rows - ($this->base_page_num*$this->limit);
}
//Used in making numbered links. Sets the number of links behind and
//ahead of the current page. For example if there were a possiblity of
//20 numbered links and this was set to 5 and the current link was 10
//the result would be this 5 6 7 8 9 10 11 12 13 14 15.
function set_Links($prev_next=5)
{
$this->prev_next = $prev_next;
}
//method to get the total items.
function getTotalItems()
{
$this->total_items = $this->num_rows;
return $this->total_items;
}
//method to get the base number to use in queries and such.
function getRange1()
{
$this->range1=($this->limit*$this->page)-$this->limit;
return $this->range1;
}
//method to get the offset.
function getRange2()
{
if($this->page==$this->base_page_num + 1)
{
$this->range2=$this->extra_page_num;
} else { $this->range2=$this->limit;
}
return $this->range2;
}
//method to get the first of number as in 5 of .
function getFirstOf()
{
$this->first_of=$this->range1 + 1;
return $this->first_of;
}
//method to get the second number in a series as in 5 of 8.
function getSecondOf()
{
if($this->page==$this->base_page_num + 1)
{
$this->second_of=$this->range1 + $this->extra_page_num;
} else { $this->second_of=$this->range1 + $this->limit;
}
return $this->second_of;
}
//method to get the total number of pages.
function getTotalPages()
{
if($this->extra_page_num)
{
$this->total_pages = $this->base_page_num + 1;
} else {
$this->total_pages = $this->base_page_num;
}
return $this->total_pages;
}
//method to get the first link number.
function getFirst()
{
$this->first=1;
return $this->first;
}
//method to get the last link number.
function getLast()
{
if($this->page == $this->total_pages)
{
$this->last=0;
}else { $this->last = $this->total_pages;
}
return $this->last;
}
function getPrevious()
{
if($this->page > 1)
{
$this->previous = $this->page - 1;
}
return $this->previous;
}
//method to get the number of the link previous to the current link.
function getCurrent()
{
$this->current = $this->page;
return $this->current;
}
//method to get the current page name. Is mostly used in links to the next
//page.
function getPageName()
{
$this->pagename = $_SERVER["PHP_SELF"]."?".$_SERVER["QUERY_STRING"];
return $this->pagename;
}
//method to get the number of the link after the current link.
function getNext()
{
$this->getTotalPages();
if($this->total_pages != $this->page)
{
$this->next = $this->page + 1;
}
return $this->next;
}
//method that returns an array of the numbered links that should be
//displayed.
function getLinkArr()
{
//gets the top range
$top = $this->getTotalPages()- $this->getCurrent();
if($top <= $this->prev_next)
{
$top = $top;
$top_range = $this->getCurrent() + $top;
} else { $top = $this->prev_next; $top_range = $this->getCurrent() + $top; }
//gets the bottom range
$bottom = $this->getCurrent() -1;
if($bottom <= $this->prev_next)
{
$bottom = $bottom;
$bottom_range = $this->getCurrent() - $bottom;
} else { $bottom = $this->prev_next; $bottom_range = $this->getCurrent() - $bottom; }
$j=0;
foreach(range($bottom_range, $top_range) as $i)
{
$this->link_arr[$j] = $i;
$j++;
}
return $this->link_arr;
}
}//ends Paginator class
?>[/php:1:bac31c702c]
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.