0

我已经建立了一个类来显示数据库中的内容。我现在想通过 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']); 

如有必要,数据库表:

|身份证| |page_id| |标题| |内容| |日期| |职位|

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


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

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

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

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

4

3 回答 3

0

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

于 2013-05-01T13:03:33.293 回答
0

您不能在课堂内使用以下 lin:

全球 $page;

你不需要这个。只需将其注释掉,它就会起作用。

于 2013-05-01T13:15:09.003 回答
0

“提供的参数无效...”错误意味着您在 foreach 循环中传递的变量不是数组。通过查看您的代码,我能想到的一件事是您的查询中有错误。您的查询似乎很好,所以我会说某个地方有一个 MySQL 不理解的隐形字符。然后,您的方法返回 false,并且 foreach 循环不能将“false”作为参数。

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

(对不起,我为此添加了另一个答案,但文字太长,无法发表评论)

于 2013-05-03T03:51:55.250 回答