2015-11-11 42 views
0

我測試了一個tuto。我是php的新手。 我在news.php中有一個實體,一個經理和一個顯示結果的頁面。 我使用PDO執行查詢。我有結果,但無法顯示它們。我的PDO結果不適用於顯示

實體就是這樣:

class News { 

    private $_id; 
    private $_titre; 
    private $_contenu; 

    public function id() 
    { 
     return $this->_id; 
    } 


    public function titre() 
    { 
     return $this->_titre; 
    } 


    public function contenu() 
    { 
     return $this->_contenu; 
    } 



    public function setId($id) 
    { 
     if(!is_int($id)) 
      throw new Exception('L\'id n\'es pas de type int'); 

     $this->_id = $id; 
    } 


    public function setTitre($titre) 
    { 
     if(!is_string($titre)) 
      throw new Exception('Le titre n\'es pas de type string'); 

      $this->_titre = $titre; 
    } 


    public function setContenu($contenu) 
    { 
     if(!is_string($contenu)) 
      throw new Exception('Le contenu n\'es pas de type string'); 

      $this->_contenu = $contenu; 
    } 


} 

我的新聞經理:

class newsManager 
{ 
    private $_db; 
const SELECT_5LAST_NEWS = 'SELECT * FROM news ORDER BY id DESC LIMIT 0,5'; 

public function select5News() 
    { 
     $query = $this->_db->query(self::SELECT_5LAST_NEWS); 
     $query->setFetchMode(PDO::FETCH_CLASS | PDO::FETCH_PROPS_LATE, 'News'); 
     return $query->fetchAll(PDO::FETCH_CLASS, 'News');; 
    } 

} 

然後測試我的觀點:

require 'classes/newsManager.php'; 

$newsmngr = new newsManager(); $req = $newsmngr->select5News(); 

foreach ($req as $u) { 
    print_r($u); } 

這就是給:

News Object ([_id:News:private] => [_titre:News:private] => 
[_auteur:News:private] => [_contenu:News:private] => 
[_dateAjout:News:private] => [_dateModif:News:private] => [id] => 3 
[auteur] => howsDoingThis [titre] => where i am.... [contenu] => Lorem 
ipsum dolor sit amet,(...) 

我的結果充滿但是當我嘗試以顯示它什麼也沒有發生與該代碼:

foreach($req as $news) 
{ 
    echo '<section><p class="titre"><a href="administration.php?id='.$news-id().'">'.$news->titre().'</a></p>'; 
    echo '<p class="description">'.$news->contenu().'</p></section>'; 
} 

有人能幫助我PLZ。謝謝

+0

'$新聞-ID('來獲取數據'$ news-> id()' –

+0

Thanks.I只是看到了,但事實並非如此。我不知道如何操作我的結果集: – grimzom

+0

我得到這個:$ req = $ newsmngr-> select5News(); – grimzom

回答

0

id和contenu是私有變量,你不能直接訪問它們。您必須使用在您的新聞類中定義的一些公有的getter方法

public function getId(){ 
    return $this->_id; 
} 

然後你通過這樣的$news->getId();

希望)getter方法本幫助

+0

在我的課上,我已經有一個公共獲取方法: public function id() { return $ this - > _ id; } – grimzom

+0

我通過調用$ news-> titre而不是我的對象的方法來解決我的問題$ news-> getTitre() – grimzom