Autor Zpráva
radeson
Profil *
Potrbuju upravit strankovani...
Na Trupikove blogu
jsem nalezl skript pro strankovani, ktery vypada takto:




<?php
require_once('otevridb.inc');

do
{
// Připojení k databázi.
if (!OtevriDB()) break;

class CleverPager
{
// SQL prikaz pro vyber dat pred strankovanim,
// nesmi pouzivat LIMIT
var $SelectCommand;
// SQL prikaz na vypocitani poctu zaznamu lze nechat
// nenastaveny, v tom pripade se vygeneruje v metode DataBind
var $CountCommand;
// Pocet zaznamu na strance
var $PageSize = 10;
// Parametr URL, ze ktereho se cte cislo akt. stranky
var $UrlParameterName;
// atribut ID, ktery bude mit div kolem pageru
var $PagerID = "PagerId";
// atribut Class, ktery bude mit div kolem pageru
var $PagerCssClass = "PagerClass";
// zarovnani - hodnota text-align v atributu style,
// hodnota inherit znamena, ze div tento atribut
// vubec mit nebude
var $PagerAlign = "inherit";
// pocet cisel okolnich stranek, ktere se zobrazi
// hodnota -1 znamena, ze se zobrazi vsechny
// hodnota 0 znamena zadne
var $PageLinksDisplayed = -1;
// priznak zobrazovani tlacitek predchozi a nasledujici stranky
var $ShowPrevNext = 1;
// priznak zobrazovani tlacitek prvni a posledni stranky
var $ShowFirstLast = 1;

// text odkazu na prvni stranku
var $FirstPage = "&lt;&lt;";
// text odkazu na posledni stranku
var $LastPage = "&gt;&gt;";
// text odkazu na predchozi stranku
var $PrevPage = "&lt;";
// text odkazu na nasledujici stranku
var $NextPage = "&gt;";

// css tridy, ktere budou mit jednotlive odkazy na stranky
var $LinkCssClass;
var $FirstCssClass;
var $LastCssClass;
var $NextCssClass;
var $PrevCssClass;
var $CurrentPageCssClass;

// aktualni stranka
var $_targetedPage = 2;
// pocet stranek
var $_pageCount = 0;
// Zde bude vysledkova sada po zavolani DataBind
var $ResultSet = NULL;
// priznak prvniho parametru, nedulezite
var $first = 0;

// konstruktor - parametry jsou SQL prikaz na vyber vysledkove
// sady a parametr URL, ve kterem bude cislo aktualni stranky
function CleverPager(
$SelectCommand,
$UrlParameterName)
{
$this->SelectCommand = $SelectCommand;
$this->UrlParameterName = $UrlParameterName;
}

// Spocita pocet zaznamu a z atributu _pageCount,
// PageSize a _targetedPage vybere pozadovanou stranku
function DataBind()
{
// priprava prikazu pro spocitani zaznamu,
// pokud nebyl zadan zvenci
if (!$this->CountCommand || $this->CountCommand == "")
{
$this->CountCommand = preg_replace(
'@SELECT (.*)FROM@',
'SELECT COUNT($1) AS Count FROM',
$this->SelectCommand);
}
//zjisteni cisla aktualni stranky
if (isset($_GET[$this->UrlParameterName]))
$this->_targetedPage =
(int)($_GET[$this->UrlParameterName]);
else
$this->_targetedPage = 1;
if ($this->_targetedPage == 0)
$this->_targetedPage = 1;
//zjisteni poctu zaznamu
$c = (mysql_fetch_object(
mysql_query($this->CountCommand)));
//vypocet poctu stranek
$this->_pageCount =
(int) (($c->Count + $this->PageSize - 1) / $this->PageSize);
if ($this->_targetedPage > $this->_pageCount)
$this->_targetedPage = 1;
//vypocet parametru pro LIMIT
$firstrow =
($this->_targetedPage - 1) * $this->PageSize;
$this->ResultSet =
mysql_query("$this->SelectCommand ".
" LIMIT $firstrow, $this->PageSize" );
}

// postupne vraci radky vysledkove sady,
// po zavolani DataBind
function GetOne()
{
return mysql_fetch_object($this->ResultSet);
}

//pomocna metoda pro vytvoreni odkazu
function prepareLink(
$prefix,
$page,
$anchoringText,
$cssClass)
{
if ($page != $this->_targetedPage)
{
if ($page == 1)
$h = $prefix;
else {
if ($this->first)
$h = $prefix."?".$this->UrlParameterName."=".$page;
else
$h = $prefix."&".$this->UrlParameterName."=".$page;
}
if ($cssClass != "" && $cssClass)
$css = " class="$cssClass"" ;
else $css="";
return "<a href="$h"$css>$anchoringText</a> ";
} else {
if ($this->CurrentPageCssClass &&
$this->CurrentPageCssClass != "")
{
echo "<span class="$this->CurrentPageCssClass">";
echo $anchoringText;
echo "</span> ";
}
else
echo $anchoringText." ";
}
}

// vypise pager do tela stranky
function DrawPager()
{
//analyza url
$hrefprefix = $_SERVER['SCRIPT_NAME'];
$this->first=1;
foreach ( $_GET as $key=>$value) {
if ($key == $this->UrlParameterName)
continue;
if ($this->first)
{
$hrefprefix .= "?".$key."=".$value;
$this->first = 0;
}
else
$hrefprefix .= "&".$key."=".$value;
}

//vykresleni div tagu kolem pageru s odpovidajicimi atributy
if ($this->PagerID && $this->PagerID != "")
$id = " id="$this->PagerID"";
else $id ="";
if ($this->PagerCssClass && $this->PagerCssClass != "")
$class = " class="$this->PagerCssClass"";
else $class = "";
if ($this->PagerAlign != "inherit")
$align = " style="text-align: $this->PagerAlign"";
else
$align ="";
echo "<div $id $class $align >";

//prvni stranka
if ($this->ShowFirstLast)
{
echo $this->prepareLink(
$hrefprefix,
1,
$this->FirstPage,
$this->FirstCssClass);
}

//predchozi stranka
if ($this->ShowPrevNext)
{
$p = max($this->_targetedPage - 1, 1);
echo $this->prepareLink(
$hrefprefix,
$p,
$this->PrevPage,
$this->PrevCssClass);
}

//stranky mezi bez omezeni
if ($this->_pageCount <= $this->PageLinksDisplayed ||
$this->PageLinksDisplayed == -1)
{
for ($p = 1; $p <= $this->_pageCount; $p++)
echo $this->prepareLink(
$hrefprefix,
$p,
$p,
$this->LinkCssClass);
}
else //stranky mezi
{
$pagesBefore = (int)min(
$this->PageLinksDisplayed / 2,
$this->_targetedPage - 1);
$pagesAfter = (int)min(
$this->PageLinksDisplayed - $pagesBefore - 1,
$this->_pageCount - $this->_targetedPage);
if ($pagesAfter + $pagesBefore + 1 != $this->PageLinksDisplayed)
$pagesBefore = $this->PageLinksDisplayed - 1 - $pagesAfter;
for ($p = $this->_targetedPage - $pagesBefore;
$p <= $this->_targetedPage + $pagesAfter;
$p++)
echo $this->prepareLink($hrefprefix, $p, $p, $this->LinkCssClass);
}

//nasledujici stranka
if ($this->ShowPrevNext)
{
$p = min($this->_targetedPage + 1, $this->_pageCount);
echo $this->prepareLink(
$hrefprefix,
$p,
$this->NextPage,
$this->NextCssClass);
}

//posledni stranka
if ($this->ShowFirstLast)
{
$p = $this->_pageCount;
echo $this->prepareLink(
$hrefprefix,
$p,
$this->LastPage,
$this->LastCssClass);
}

//uzavreni bloku pageru
echo "</div>";
}
}


pro zobrazeni dat se pouziva:


 //vytvoreni objektu, jako parametry konstruktoru se

//predavaji SQL dotaz a parametr URL, ktery bude pager
//pouzivat pro odkazy na dalsi stranky
$cp = new CleverPager('SELECT * FROM clanky', 'page'
);
//ziska z databaze pozadovanou cast vysledkove sady
$cp->DataBind();

//postupne ziskavani jednotlivych zaznamu z vysledkove sady
while ($obj = $cp->GetOne())
{
echo $obj->nazev." ". $obj->rubrika. " <br />";
}

//vypsani pageru
$cp->DrawPager();

mysql_close();
} while (false);
?>


ale jelikoz sem s php zacatecnik... tak tomu zas az tak nerozumim a nevim jak bych tyhle udaje vymenil za vlast
tiso
Profil
A to máme vedieť my za Teba?
25k
Profil *
:D

v tomhle se nikdo hrabat nebude... tady mas jednoduche a funkcni strankovani

http://www.rjwebdesign.net/scripts/index.php

http://www.rjwebdesign.net/scripts/examples/strankovani2/
Toto téma je uzamčeno. Odpověď nelze zaslat.

0