我正在创建一个项目,我创建了一个允许用户创建和发布博客文章的系统。我希望能够有一个下拉功能,可以按照标记的特定类别过滤和显示帖子。我该怎么做呢?
这不是一个WordPress网站,我自己做的任何研究都主要为WordPress网站提供了结果。
如果有人能帮助我,或者至少指出我的方向,那就太棒了。我在使用PHP方面相当新,所以我会接受任何帮助。
以下是index.php中显示帖子的部分:
<div class="container">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12" id="centertext">
<h1>Posts</h1>
<?php
while ($query->fetch()):
$lastspace = strrpos($description, '');
?>
<!-- THIS IS THE STRUCTURE FOR EACH POST /-->
<article>
<div class="preview">
<div class="ptop">
<?php echo "<img src='admin/images/".$image."' width='100%' height='100%' >";?>
<div class="basicinfo">
<h2><?php echo $title?></h2>
<?php echo $category?>
</div>
</div>
<div class="pbottom">
<p><?php echo substr($description, $lastspace).'...<br><br><a href="post.php?id='.$post_id.'">VIEW POST</a>'?></p>
</div>
</div>
</article>
<?php endwhile?>
</div>
</div>
</div>
这是我在文件顶部唯一的其他PHP:
<?php
include('includes/db_connect.php');
$query = $db->prepare("SELECT post_id, title, image, LEFT(description, 300) AS description, category FROM post INNER JOIN categories ON categories.category_id=post.category_id order by post_id desc limit $start, $per_page");
$query->execute();
$query->bind_result($post_id, $title, $image, $description, $category);
?>
以下是我数据库中的帖子和类别表:
发表
CREATE TABLE `post` (
`post_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`title` varchar(255) NOT NULL,
`category_id` int(11) NOT NULL,
`description` text NOT NULL,
`posted` datetime NOT NULL,
`photo_id` int(11) DEFAULT NULL,
`image` varchar(300) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
分类
CREATE TABLE `categories` (
`category_id` int(11) NOT NULL,
`category` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 0 :(得分:1)
一种方式:
在页面上,您需要<select>
,其中包含不同的类别。当他们选择一个时,他们被重定向到yoursite.com/index.php?category=xyz
),其中xyz是他们选择的类别。
在PHP查询中,您必须添加:WHERE category='$_GET["category"]'
(确保为安全性清理此值,使用类似mysql_real_escape_string()或PDO)。
答案 1 :(得分:0)
首先我要确定数据库模型。您可以构建n-to-n模型或1-to-n模型。在1对n模型中,任何帖子只能有一个类别,在n到n模型中,帖子可以有多个类别。
接下来我将确定我想要用户界面的复杂程度。基本上天空是极限,但要记住你的观众。你可以,例如只允许选择一个类别,或者允许选择多个类别。如果您允许多个:那么您是否希望条目必须包含所有类别(“和”逻辑)或允许任何具有任何类别(“或”逻辑)的帖子,其中许多选项也取决于你有多少条目。
一旦你完成了它,它就变得更加简单了: