2016-07-11 16 views
0

Ich arbeite Paginierung in meinem Projekt. Meine mysqli_query funktionierte außerhalb der Klasse korrekt, funktionierte jedoch nicht innerhalb der Klassenfunktion. Siehe getTotalRows() in meinem Code. Hilf mir, Freunde ..funktionierte nicht mysqli_query innerhalb der Klassenfunktion, aber es funktioniert korrekt außerhalb der Klasse

<?php 

include('config_session.php'); 

// Here is my query is ececute successfully. 

echo $result = mysqli_query($conn,"select * from tbl_subcategory order by subcat_pos ") or die("failed"); 

class CSSPagination 
{ 
    private $totalrows; 
    private $rowsperpage; 
    private $website; 
    private $page; 
    private $sql; 

    public function __construct($sql, $rowsperpage, $website) 
    { 


      $this->sql = $sql; 

     $this->website = $website; 
     $this->rowsperpage = $rowsperpage; 
    } 

    public function setPage($page) 
    { 
     if (!$page) { $this->page=1; } else { $this->page = $page; } 
    } 

    public function getLimit() 
    { 
     return ($this->page - 1) * $this->rowsperpage; 
    } 

    private function getTotalRows() 
    { 

      // Here is my query is didn't execute. Only echo failed message 

      $result = mysqli_query($conn,"select * from tbl_subcategory order by subcat_pos ") or die("failed"); 



     $this->totalrows = mysqli_num_rows($result); 
    } 

    private function getLastPage() 
    { 
     return ceil($this->totalrows/$this->rowsperpage); 
    } 

    public function showPage() 
    { 
     $this->getTotalRows(); 

     $pagination = ""; 
     $last = $this->getLastPage(); 
     $lpm1 = $this->getLastPage() - 1; 
     $page = $this->page; 
     $prev = $this->page - 1; 
     $next = $this->page + 1; 

     $pagination .= "<div class=\"pagination\""; 
     if($margin || $padding) 
     { 
      $pagination .= " style=\""; 
      if($margin) 
       $pagination .= "margin: $margin;"; 
      if($padding) 
       $pagination .= "padding: $padding;"; 
      $pagination .= "\""; 
     } 
     $pagination .= ">"; 

     if ($this->getLastPage() > 1) 
     { 
      if ($page > 1) 
       $pagination .= "<a href=$this->website&page=$prev>« prev</a>"; 
      else 
       $pagination .= "<span class=\"disabled\">« prev</span>"; 


      if ($this->getLastPage() < 9) 
      { 
       for ($counter = 1; $counter <= $this->getLastPage(); $counter++) 
       { 
        if ($counter == $page) 
         $pagination .= "<span class=\"current\">".$counter."</span>"; 
        else 
         $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";     
       } 
      } 
      elseif($this->getLastPage() >= 9) 
      { 
       if($page < 4)  
       { 
        for ($counter = 1; $counter < 6; $counter++) 
        { 
         if ($counter == $page) 
          $pagination .= "<span class=\"current\">".$counter."</span>"; 
         else 
          $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";     
        } 
        $pagination .= "..."; 
        $pagination .= "<a href=$this->website&page=$lpm1>".$lpm1."</a>"; 
        $pagination .= "<a href=$this->website&page=$last>".$last."</a>";  
       } 
       elseif($last - 3 > $page && $page > 1) 
       { 
        $pagination .= "<a href=$this->website&page=1>1</a>"; 
        $pagination .= "<a href=$this->website&page=2>2</a>"; 
        $pagination .= "..."; 
        for ($counter = $page - 1; $counter <= $page + 1; $counter++) 
        { 
         if ($counter == $page) 
          $pagination .= "<span class=\"current\">".$counter."</span>"; 
         else 
          $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";     
        } 
        $pagination .= "..."; 
        $pagination .= "<a href=$this->website&page=$lpm1>$lpm1</a>"; 
        $pagination .= "<a href=$this->website&page=$last>".$last."</a>";  
       } 
       else 
       { 
        $pagination .= "<a href=$this->website&page=1>1</a>"; 
        $pagination .= "<a href=$this->website&page=2>2</a>"; 
        $pagination .= "..."; 
        for ($counter = $last - 4; $counter <= $last; $counter++) 
        { 
         if ($counter == $page) 
          $pagination .= "<span class=\"current\">".$counter."</span>"; 
         else 
          $pagination .= "<a href=$this->website&page=$counter>".$counter."</a>";     
        } 
       } 
      } 

     if ($page < $counter - 1) 
      $pagination .= "<a href=$this->website&page=$next>next »</a>"; 
     else 
      $pagination .= "<span class=\"disabled\">next »</span>"; 
     $pagination .= "</div>\n";   
     } 

     return $pagination; 
    } 
} 
?> 
+0

Erwägung ziehen, Ihren Code in einem Codeblock oder Versäubern . Sehr schwierig, Ihrem Schnipsel zu folgen. – vsharper

+0

Wie rufst du deine getTotalRows() auf? – jeff

+0

In 'getTotalRows()' verwenden Sie eine undefinierte Variable $ conn, wenn Sie die Abfrage durchführen. Funktionen und Methoden haben keinen Zugriff auf Variablen, die im globalen Namespace oder in anderen Funktionen oder Methoden erstellt wurden. Sie müssen die '$ conn'-Variable entweder an den Klassenkonstruktor übergeben (und dann' $ this-> conn' verwenden, wie Sie es mit '$ sql' gemacht haben) oder an die Methode selbst. –

Antwort

0

$ conn durch diese ersetzt wird -> $ conn

Nun, es funktioniert ... Danke Freunde