データベースのコンテンツを表示するクラスを作成しました。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);
これにより、次のエラーが発生します: 警告: 42 行目の ... content.class.php の foreach() に無効な引数が指定されました