我已经构建了一个显示数据库内容的类。我想现在通过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']);
必要时使用Db表:
| ID | | PAGE_ID | |标题| |内容| |日期| |位置|
因为我知道这可能不是正确的方法,你能给我一些提示吗?我对课程很陌生。
好的..所以我稍微更改了代码,从类中删除了全局$页面并将其替换为我执行该类的页面:
include("classes/content.class.php");
global $page;
$page = $_GET['page'];
$content = new Content();
echo $content->display_content($page);
有了这个,我得到以下错误:警告:在第42行的... content.class.php中为foreach()提供的参数无效
答案 0 :(得分:0)
好的,问题是您在类定义中使用global $page
。如果你想让$ page全局化,你必须将global $page
放在方法的开头,而不是类。
答案 1 :(得分:0)
你不能在课堂内使用以下内容:
全球$ page;
你不需要这个。只需将其评论出来即可。
答案 2 :(得分:0)
'无效参数提供...'错误意味着您在foreach循环中传递的变量不是数组。通过查看代码,我能想到的一件事是你的查询中有错误。您的查询似乎很好,所以我会说MySQL有一个看不见的字符,MySQL无法理解。然后您的方法返回false,并且foreach循环不能将'false'作为参数。
我建议尝试mysql_query($sql, $this->conn) or die(mysql_error())
(我建议您仅将其用于激进调试,因为它可能会显示有关您表格结构的一些信息)。这将尝试查询,如果有错误,则打印错误。
(对不起,我为此添加了另一个答案,但文字太长,无法发表评论)