私は OOP でこの PHP チュートリアルを行っており、基本的なトレーニングからの手続き型コードをそれに組み込んで、基本以外のことを実際に学んだかどうかを確認しようとしています。
したがって、Blog という名前のクラス内に次の 2 つの関数があります。
public function navigation($selected_subject, $selected_page) {
$output = "<ul class=\"subjects\" id=\"accordion\">";
$subject_set = $this->get_all_subjects($public);
while ($subject = mysqli_fetch_array($subject_set)) {
$output .= "<li";
if ($subject["id"] == $selected_subject['id']) { $output .= " class=\"blogselected\""; }
$output .= ">{$subject["menu_name"]}</li>";
$page_set = $this->get_pages_for_subject($subject["id"], $public);
$output .= "<ul class=\"pages\">";
while ($page = mysqli_fetch_array($page_set)) {
$output .= "<li";
if ($page['id'] == $selected_page['id'] ) { $output .= " class=\"blogselected\""; }
$output .= "><a href=\"../public/blog_index.php?page=" . urlencode($page["id"]) .
"\">{$page["menu_name"]}</a></li>";
}
$output .= "</ul>";
}
$output .= "</ul>";
return $output;
}
public function blog_page($selected_page){
if ($selected_page) {
echo "<h2>" . $selected_page['menu_name'] . "</h2>";
echo "<div class=\"page-content\">";
echo $selected_page['content'];
echo "</div>";
} else {
echo "<h2>Welcome to Widget Corp</h2>";
}
}
そして、インデックスページにあるこのコード:
<?php
$blog = new Blog;
global $selected_page;
global $selected_subject;
?>
<div class="blog">
<div class="blogpost">
<?php echo $blog->blog_page($selected_page); ?>
</div>
<div class="blognav">
<?php echo $blog->navigation($selected_subject, $selected_page); ?>
</div>
</div>
コードは部分的に機能します。件名とサブページを含むナビゲーションは正常に表示されます。リンクをクリックすると、ID「?page=1」が URL に渡されますが、問題は、コードがクラス「blogselected」をアクティブなリンクに追加していないことです。また、リンクをクリックしてもコンテンツは表示されません。コンテンツ領域に表示される唯一のものは、2 番目の関数の h2 "Welcome to Widget Corp" from else 条件なので、変数 $selected_subject と $selected_page が問題を引き起こしている可能性があると思いますが、私にはわかりません自分で出す。これを解決するために数え切れないほどの時間を費やしましたが、完全にあきらめようとしています。ここで何が欠けていますか?