2011-03-07 6 views
0

Comment se fait-il que ma boucle while ne se termine jamais? Je n'arrive pas à le faire fonctionner, peut-être qu'il y a un problème avec ma classe?PHP while boucle ne se termine jamais

function getCategory() { 

    require_once('includes/database/config.php'); 

    $database = new Database(); 
    $database ->sqlQuery("SELECT * FROM news_category");  
    $rows = $database ->sqlNumRows(); 

    if($rows > 0) { 
     while($row = $database->sqlGetRows()) { 
      echo "<li><input type='hidden' value='" . $row->id . "' id='hiddenForm' /><span></span> <img src='gfx/close.png' alt='' title='Slett Kategorien' /></li>"; 
     } 
    } else { 
     echo "<hr>"; 
     echo "<br />"; 
     echo "<span>Det er ingen kategorier her enda!</span>"; 
    } 

} 

class Database { 

    private $mysqli; 
    private $query; 
    private $string; 

    public function __construct() { 
     $this->mysqli = new mysqli('localhost', 'root', '', 'hltv'); 
    } 

    public function sqlQuery($sql) { 
     $this->mysqli->query($sql); 
     $this->query = $sql; 
    } 

    public function sqlNumRows() { 
     $q = $this->mysqli->query($this->query); 
     return $q->num_rows; 
    } 

    public function sqlGetRows() { 
     $q = $this->mysqli->query($this->query); 
     return $q->fetch_object(); 
    } 

} 

Répondre

2

Parce que vous réexaminez toujours. Chaque fois que vous appelez #sqlGetRows, vous réexécutez la requête et vous obtenez toujours la première ligne de la requête à chaque appel.

Ce que vous pouvez faire est, par exemple:

public function sqlQuery($sql) { 
    $this->lastQuery = $this->mysqli->query($sql); 
} 

public function sqlGetRow() { 
    $this->lastQuery->fetch_object(); 
} 
Questions connexes