![](/img/trans.png)
[英]I want to display different content based on page_id, but on every page 'echo page_id' result is the same
[英]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']);
db表(如有必要):
| id | | 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()提供了无效参数。
好的,问题是您在类定义中使用了global $page
。 如果要使$ page全局,则必须将global $page
放在方法的开头,而不是类的开头。
您不能在课程内部使用以下lin:
全球$ page;
您不需要这个。 只需注释掉它,它将起作用。
“提供了无效的参数...”错误意味着您在foreach循环中传递的变量不是数组。 通过查看您的代码,我可以想到的一件事是查询中存在错误。 您的查询似乎很好,所以我想说在MySQL无法理解的地方有一个看不见的字符。 然后,您的方法返回false,并且foreach循环不能将“ false”作为参数。
我建议尝试使用mysql_query($sql, $this->conn) or die(mysql_error())
(我建议您仅将其用于基本调试,因为它可能会显示有关表结构的某些信息)。 这将尝试查询,如果有错误,则将您打印出来。
(很抱歉,我为此添加了另一个答案,但是文本太长,无法发表评论)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.