我已经构建了一个类来显示数据库中的内容。我现在想通过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())
(我建议您仅将其用于激进调试,因为它可能显示有关表结构的一些信息)。这将尝试查询,如果有错误,则打印错误。