过滤内容显示类中的page_id


Filter page_id in content display class

我已经构建了一个类来显示数据库中的内容。我现在想通过page_id来过滤它,这样我就可以将内容链接到正确的page_id。因此,我开始尝试使用$_GET使其工作,但到目前为止,它只给出错误…

(我的菜单项链接给出?page=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']); 

数据库表

id

| | | page_id | | |标题内容| | |日期| | |位置

既然我知道这可能不是正确的方法,你能给我一些建议吗?我对课程很陌生。


好吧. .所以我改变了一点代码,从类中删除了全局$page,并将其替换为我执行类的页面:

include("classes/content.class.php");
global $page; 
$page = $_GET['page'];
$content = new Content();
echo $content->display_content($page); 

有了这个,我得到以下错误:警告:为foreach()提供的无效参数在…第42行

好的,问题是您在类定义中使用global $page。如果你想让$page全局化,你必须把global $page放在方法的开头,而不是类的开头。

不能在类中使用下列的lin:

全球美元页面;

你不需要这个。把它注释掉就行了

提供的'无效参数…' error表示在foreach循环中传递的变量不是数组。通过查看您的代码,我可以想到的一件事是,您在查询中有一个错误。你的查询似乎很好,所以我想说有一个不可见的字符,MySQL不理解的地方。然后你的方法返回false,并且foreach循环不能接受'false'作为参数。

我建议尝试mysql_query($sql, $this->conn) or die(mysql_error())(我建议您仅将其用于激进调试,因为它可能显示有关表结构的一些信息)。这将尝试查询,如果有错误,则打印错误。

(对不起,我为这个问题添加了另一个答案,但是文本太长了,不适合评论)