2013-05-01 64 views
0

我已經構建了一個類來顯示數據庫中的內容。我想現在通過page_id過濾它,所以我可以將內容鏈接到正確的page_id。於是,我開始試圖使其與$ _GET但到目前爲止,只給了錯誤的工作..在內容顯示類中過濾page_id

(在我的菜單鏈接項目進行頁= X,X = ID?)

我班至今:

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

global $page;  
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($page) 
{ 
    $sql = "SELECT id, page_id, title, content, date, position FROM articles ORDER BY id, position WHERE page_id = ".$page." "; 
    $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($page) { 
    $this->article = $this->get_content_articles($page); 
    $content = ""; 
    foreach ($this->article as $article) 

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

    return $content; 
    } 
} 

我如何運行的類:

include("classes/content.class.php"); 


$content = ""; 
$content = new Content(); 

echo $content->display_content($_GET['page']); 

db表如有必要:

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

因爲我知道這可能不是正確的方法來做到這一點,你可以給我一些提示來做到這一點嗎?我對課程相當陌生。


好吧..所以我改變了代碼了一下,從類中刪除全局的$頁面,並將其替換成網頁,我執行的是類:

include("classes/content.class.php"); 

global $page; 
$page = $_GET['page']; 
$content = new Content(); 
echo $content->display_content($page); 

有了這個,我得到以下錯誤:警告:無效的參數提供的foreach()在... content.class.php在線42

+0

什麼是你所得到的錯誤? – 2013-05-01 12:30:18

+0

解析錯誤:語法錯誤,意外的T_GLOBAL,期待第5行中的T_FUNCTION ...(測試頁面:http://thepiratehenk.nl/pgwe/testcontent.php) – jediah 2013-05-01 12:44:03

回答

0

好的,問題是你在你的類定義中使用global $page。如果你想讓$ page成爲全局的,你必須把global $page放在方法的開頭,而不是類。

+0

我刪除了全局變量,並且錯誤仍然存​​在。 。我也把它移到另一個頁面,並且還出現了一個錯誤 – jediah 2013-05-01 21:22:21

0

不能使用以下霖內線等級:

global $page;

你不需要這個。只是評論它,它會工作。

+0

我刪除了全局變量,並且錯誤是stil那裏。 – jediah 2013-05-01 20:58:58

+1

你不能在類中聲明全局變量。 – 2013-05-02 06:49:59

+1

全局錯誤現在被移除...你現在得到的錯誤是針對foreach循環,可能的原因是「函數get_content_articles」沒有返回數組。請檢查你在這個函數中的查詢,並確保它返回記錄 – 2013-05-02 06:56:30

0

'invalid argument supplied ...'錯誤意味着您在foreach循環中傳遞的變量不是數組。通過查看你的代碼,我能想到的一件事是你的查詢中有一個錯誤。你的查詢看起來很好,所以我會說在MySQL不明白的地方有一個不可見的字符。您的方法然後返回false,並且foreach循環不能將'false'作爲參數。我建議嘗試mysql_query($sql, $this->conn) or die(mysql_error())(我建議你只用於徹底調試,因爲它可能會顯示一些關於你的表格結構的信息)。這將嘗試查詢,並在出現錯誤時將其打印出來。

(對不起,我添加了另一個答案這一點,但文本太長,評論)

+0

我添加了「或死」的部分,並刪除了if(!$ result)return false;部分,它給了我以下錯誤:解析錯誤:語法錯誤,意外的T_VARIABLE ...在第29行。($ fetch_all = array();)現在要做什麼的建議? – jediah 2013-05-03 11:52:28

+0

你對我如何做這項工作有任何線索嗎? – jediah 2013-05-03 18:03:05

+0

哦,我在我的例子中忘了分號,''die(mysql_error());' 你實際上並沒有刪除'if(!$ result)return false;'但是你可以返回一個空數組('if(!$ result)return array();') – 2013-05-03 19:24:30