2013-04-29 34 views
0

首先:我知道這是一個非常混亂的代碼,而不是正確的方法來做到這一點。但它的第一次嘗試寫一個類和功能..使用功能顯示內容無法正常工作

什麼,我想它做的事:輸出中的「文章」表中的所有行,在一個DIV(DIV再次「重複」的每一行)和按ID和日期排序。稍後我想通過頁面ID對其進行過濾。

做些什麼:只給出了1排的輸出,不顯示其他行..

我希望我的解釋是有道理的..

這就是我的「物品」表看起來像現在:

| id | | PAGE_ID | |標題| |內容| |日期| |位置|

標題爲純文本,html內容來自adminpanel中所見即所得編輯器,日期爲DD-MM-YYYY。

這就是我的 「階級」 的模樣:

include_once('./includes/config.php'); 
class Content { 


public $id; 
public $page_id; 
public $title; 
public $content; 
public $position; 



var $conn; 

function Content() 
     { 
       $this->conn = mysql_connect(Config::DB_HOST, Config::DB_USER, Config::DB_PASS); 
       mysql_select_db(Config::DB_NAME, $this->conn); 
     } 


function get_content_articles() 
{ 
    $sql = "SELECT id, page_id, title, content, date, position FROM articles ORDER BY id, position"; 
    $result = mysql_query($sql, $this->conn); 

       if (!$result) 
         return false; 
    $fetch_all = array(); 

    while($article = mysql_fetch_assoc($result)) 
    $fetch_all[] = $article; 

return $fetch_all; 
} 


public function display_content() { 
    $this->article = $this->get_content_articles(); 
    foreach ($this->article as $article) 

    $content = '<div class="blok"> 
     <h2>[id:'.$article['id'].'] 
     </br> 
     [title: '.$article['title'].']</h2> 
     </br> 
     [content: '.$article['content'].'] 
     </br> 
     [date: '.$article['date'].'] 
    </div>'; 

    return $content; 
    } 
} 

這是我如何使用它:

$content = new Content(); 

回聲$內容 - > display_content();

測試頁面在這裏:http://thepiratehenk.nl/pgwe/testcontent.php

是否有人對如何解決這一問題有何建議? (請原諒我的英語不好而凌亂的問題,我希望這一切是很有意義的。)


好了,感謝您的答案爲止。我知道我不應該在類中使用mysql_函數..但它是我現在最瞭解的唯一方法。

我改變了display_content()函數來此:

public function display_content() { 
    $this->article = $this->get_content_articles(); 
    foreach ($this->article as $article) 
    $content = ""; 
    $content .= '<div class="blok"> 
     <h2>[id:'.$article['id'].'] 
     </br> 
     [title: '.$article['title'].']</h2> 
     </br> 
     [content: '.$article['content'].'] 
     </br> 
     [date: '.$article['date'].'] 
    </div>'; 

    return $content; 
    } 
} 

這是你的意思是它是的方式?無論如何,結果並沒有改變..

+0

你驗證多少行查詢返回? – reikyoushin 2013-04-29 18:39:43

+0

您需要將每個結果聯合到'$ content'上 - 每當您運行foreach循環時,您現在都會覆蓋它。試試'$ content。= ....'來代替。 – andrewsi 2013-04-29 18:40:38

+3

_But第一次嘗試編寫一個類和函數.._ ..然後開始避免使用[mysql_ *](http://php.net/manual/en/function.mysql-query.php)函數。 – dbf 2013-04-29 18:41:06

回答

1

這是正確的做法,什麼@bwoebi建議:

public function display_content() { 
    $this->article = $this->get_content_articles(); 
    $content = ""; 
    foreach ($this->article as $article) { 

    $content .= '<div class="blok"> 
     <h2>[id:'.$article['id'].'] 
     </br> 
     [title: '.$article['title'].']</h2> 
     </br> 
     [content: '.$article['content'].'] 
     </br> 
     [date: '.$article['date'].'] 
     </div>'; 
    } 
     return $content; 
    } 
+0

謝謝你們!它現在有效! – jediah 2013-04-29 19:33:29

3
$content = '<div class="blok">...'; 

您重新分配變量$content在你的foreach循環的每次迭代的項的值。所以$content將只包含最後一個條目。

使用附加運算符.=

$content .= '<div class="blok">...'; 

編輯:如由@JoseAreas評論說,你應該進入你的循環之前寫:

$content = ""; 

避免一些通知。

+0

首先,在循環之前將其定義爲空白,以避免警告。 – 2013-04-29 18:44:13

+0

@JoseAreas忘記了,謝謝;添加。 – bwoebi 2013-04-29 18:46:13

+0

我確實將它添加到代碼中,但它不會改變結果。 – jediah 2013-04-29 19:06:13