私はブログを作成していて、2 つのテーブルの記事とカテゴリがあり、これらのテーブルに参加していますが、カテゴリのリンクをクリックするとカテゴリだけが表示されるようにしたいと考えています。リンクでcategory_idを渡していますが、ページのリンクがblog.php?=category_idのような場合、カテゴリだけを表示する方法がわかりません。URL には、categories_id 番号が含まれています。そのカテゴリだけを表示する方法がわかりません。カテゴリを表示するだけの SQL ステートメントは知っていますが、理解できないのは、そのステートメントを実行する方法です。 URL には the?=category_id が含まれており、すべての記事を日付別に表示していた元の SQL ステートメントを実行しません。ページ名に応じて if および else 条件を実行しようとしましたが、機能しませんでした。
<?php
connect_to_db();
$url = $_SERVER['SCRIPT_NAME'];
$pos = strrpos($url,"/");
$pagename = substr($url,$pos+1);
if($pagename == ("blog.php")) {
$sql = "SELECT article_id, title, body, date, categories.category, author FROM articles
LEFT JOIN categories ON articles.category = categories.category_id ORDER BY article_id DESC LIMIT 4";
}
elseif($pagename == ("blog.php?=1")) {
$sql = "SELECT article_id, title, body, date, categories.category, author FROM articles
LEFT JOIN categories ON articles.category = categories.category_id WHERE category_id = 1";
}
$result = query($sql);
if($result===false) {
echo "query failed";
}
else {
while( $data = mysqli_fetch_array($result))
{
?>
<article>
<h3 class="title-medium"><?php echo $data['title']; ?></h3>
<p class="caption-medium"><?php echo $data['author']; ?> <?php echo $data['date']; ?> <?php echo $data['category']; ?></p>
<img src="img/blog-post-1.jpg" alt="">
<p><?php echo substr($data['body'],0,450)." ..." ?></p>
<a href="blog-post.php?id=<?php echo $data['article_id']; ?>"><p class="caption-medium highlight">Read More</p></a>
<hr>
</article>
<?php
}
}
?>