hvorfor laver den for mange sider?
jeg har et script der laver bladrersystem men selv om der kun er en linje kan man bladre til side 7... her er scriptet:include ('class.kwpager.php');
$p = new KwPager;
$p -> pr_side(5);
$p -> buttons("<- Forrige Side" , "Næste Side ->");
$p -> pagerpath($_SERVER['PHP_SELF'],"?");
$limit = $p -> limit();
class.kwpager.php:
<?php
/*
Udviklet af: Kenneth Wagner
Hjemmeside: http://www.wagners.dk
Alternativt: http://wagners.users.whitehat.dk/
E-mail: script@wagners.dk
Script: KwPager
Version: 1.0
Dato: 8. september 2003
Denne klasse er udviklet for nemmere at kunne benytte en pager på simple hjemmesider.
Den kan benyttes frit af alle og en hver, men jeg vil da blive glad for hvis du lige
sender en mail til mig om hvilken side du benytter den på.
Der ydes ingen garanti af nogen art på dette script, og jeg yder kun support på det
via mail - hvis min tid tillader det ;o).
eksempel på brug af KwPager:
''''''''''''''''''''''''''''
<?php
// Database tabellen kunne se sådan her ud:
// CREATE TABLE news (
// id int(11) NOT NULL auto_increment,
// title varchar(100) NOT NULL default '',
// text text NOT NULL,
// name varchar(100) NOT NULL default '',
// PRIMARY KEY (id)
// ) TYPE=MyISAM;
// Selve eksemplet af en fil der bruger KwPager:
// tilslut til databasen
include "config.php";
// Includer klassen KwPager - Du kan godt ændre navnet på filen hvis du har lyst
include "class.kwpager.php";
// kald på klassen KwPager
$p = new KwPager;
// hvor mange skal udskrives pr side
$p -> pr_side(5);
// lav om på forrige og næste knapperne
// OBS: Valgfri - Ikke nødvendig
$p -> buttons("<- Min Forrige Knap" , "Min Næste Knap ->");
// stien i linket til pageren
// OBS: Valgfri - Ikke nødvendig
// Kan være nyttig hvis klassen skal integreres på en eksistrende side
$p -> pagerpath($_SERVER['PHP_SELF'],"?");
// Limit sættes lige i en vareiabel
$limit = $p -> limit();
// Kald tabellen i databasen som du vil page på - Her hedder den "news":
$result = mysql_query("select * from news limit ".$limit."");
while($row = mysql_fetch_array($result)){
print "titel: $row[title]<br>";
print "Tekst: $row[text]<br>";
print "Navn: $row[name]<br><hr>";
}
// Pager oplysninger puttes i en variabel
// BEMÆRK feltet "id" er fra tabellen "news" i dette eksempel
$pager = $p -> Pager("id","news");
// Pageren udskrives til skærmen
echo $pager;
?>
*/
class KwPager{
var $pr_side = 10;
var $startside = 1;
var $next = "Næste >>";
var $prev = "<< Forrige";
var $vis_sider = 1;
var $total;
var $pagerpath = "?";
// functionen benyttes til at bestemme
// hvormange der skal vises på hver side
function pr_side($pr_side){
$this -> pr_side = $pr_side;
}
// $pagerpath = Benyttes til at angive hvilken fil pageren skal fungere i
// $q_or_amp = benytes til at bestemme om der skal være et '?' eller '&'/'&' efter linket
function pagerpath($pagerpath,$q_or_amp){
$this -> pagerpath = $pagerpath.$q_or_amp;
}
// Du kan definere knapperne anderledes hvis du vil ;o)
function buttons($prev, $next){
$this -> prev = $prev;
$this -> next = $next;
}
// benyttes direkte i din sql-query f.eks. $limit = $p -> limit();
// $query = mysql_query("select * from tabel limit ".$limit."");
function limit(){
if (!isset($_GET['s'])) {
$_GET['s'] = 0; //Tjekker om $s - som står for start - er sat, hvis ikke sættes den
}
$limit = $_GET['s'].",".$this -> pr_side;
return $limit;
}
function Pager($field_to_count, $table_to_use){
$pagerecho .= "";
$totalrow = mysql_query("select count(".$field_to_count.") as total from ".$table_to_use."") or die(mysql_error());
$this->total = mysql_result($totalrow,0);
$pagerecho .= '<table border="0" cellpadding="2" cellspacing="2" align="center"><tr>';
// Find ud af om derskal være et Forrige link
//Tjekker om værdien af $s er større eller lig $pr_side
if ($_GET['s'] >= $this -> pr_side) {
//Regner ud hvor mysql skal starte hvis forrige side kaldes
$prev_link = $_GET['s']-$this -> pr_side;
//Udskriver linket
$pagerecho .= '<td><a href="'.$this -> pagerpath.'s='.$prev_link.'">'.$this -> prev.'</a></td>';
}
//Hvis vis_sider er sat til 1 vises antal sider med links så man kan springe i siderne
if($this -> vis_sider == 1){
// Find ud af hvis/hvor mange sider der er rows til
$pagerecho .= '<td>';
$page = $this -> startside; //Definerer hvor sidetal skal starte
//For-løkke der kører indtil der ikke er nok rows til en side mere
for($start=0; $this -> total > $start; $start=$start+$this -> pr_side){
//Tjekker om linket vil komme til at pege på den side man er på
if ($start != $_GET['s']) {
//...hvis ikke, udskrives link med værdien af $page
$pagerecho .= ' <a href="'.$this -> pagerpath.'s='.$start.'">'.$page.'</a> '; //60
} else {
//Ellers, dvs. hvis linket vil pege på den side man er på..
//...udskrives værdien af $page bare, altså ikke som link
$pagerecho .= ' ['.$page.'] ';
}
$page++; //Lægger en til $page til næste gang løkken køres
}
$pagerecho .= '</td>';
}
// Find ud af om der skal være et næste link
// Tjekker om der er flere sider
$ps = $this -> pr_side;
if ($this->total > $_GET['s']+$ps) {
//Regner ud hvor mysql skal starte hvis næste side kaldes
$next_link = $_GET['s']+$this -> pr_side;
$pagerecho .= '<td><a href="'.$this -> pagerpath.'s='.$next_link.'">'.$this -> next.'</a></td>'; //Udskriver linket "næste"
}
$pagerecho .= "</tr></table>";
return $pagerecho;
}//end funktion Pager()
}//end class
?>
hvorfor laver den de ekstra sider??
