Problem med pager
Hey.Jeg har en pager class som ser således ud:
class Pager{
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 = ""){
global $connector;
$pagerecho .= "";
$totalrow = $connector->query("SELECT COUNT(".$field_to_count.") AS TOTAL FROM " .$table_to_use) or die(mysql_error());
//$totalrow = $connector->query("SELECT COUNT(*) 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){
$pagerecho .= '<td>';
//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
Men når jeg kører den således:
include "includes/class_pager.php";
$p = new Pager("id","felderbal_news");
$p -> pr_side($settings['news_limit']);
$p -> pagerpath($_SERVER['PHP_SELF'],"?page=news&");
$limit = $p -> limit();
$pager = $p->Pager("id","felderbal_news");
$this->output .= $this->html->shownews_end($pager);
Får jeg følgende fejl besked:
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 7864309 bytes) in C:\AppServ\www\felderbal\includes\class_pager.php on line 85
Hvad skyldes dette?
P.S. Linje 85 er denne: $pagerecho .= ' ['.$page.'] ';
