Avatar billede coolcom Nybegynder
27. februar 2008 - 19:02

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 '&amp;'/'&' 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 .= '&nbsp;<a href="'.$this -> pagerpath.'s='.$start.'">'.$page.'</a>&nbsp;'; //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 .= '&nbsp;['.$page.']&nbsp;'; 
            }
            $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 .= '&nbsp;['.$page.']&nbsp;';
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester