如何对提交给sql数据库的文章进行分类,以便当用户想要将文章发布到某个类别时,会给他们一个下拉菜单,以选择要在该类别中发布的文章。关于我们,产品和支持是类别的例子
<form method="post" action="postArticle.php">
<p>
<select name="selectedOption">
<optgroup label="About us">
<option value="about">About us</option>
</optgroup>
<optgroup label="Products">
<option value="foo">Foo</option>
<option value="oof">Oof</option>
</optgroup>
<optgroup label="Support">
<option value="support">Support</option>
</optgroup>
</select>
</p>
答案 0 :(得分:1)
首先看起来你只需要一个简单的表来实现结构,这将允许你创建一个类别结构的嵌套数组。具有parent_id == 0
的任何类别都是optgroup
,然后您会在每个父option
中将每个子类别列为optgroup
。
category_id | parent_id | category_name
1 | 0 | About us
2 | 1 | About us
3 | 0 | Products
4 | 3 | foo
5 | 3 | oof
6 | 0 | Support
7 | 6 | Support
这将输出为:
<form method="post" action="postArticle.php">
<p>
<select name="selectedOption">
<optgroup label="About us">
<option value="2">About us</option>
</optgroup>
<optgroup label="Products">
<option value="4">Foo</option>
<option value="5">Oof</option>
</optgroup>
<optgroup label="Support">
<option value="6">Support</option>
</optgroup>
</select>
</p>
显然,您可以将article表中的select值存储为链接到类别表。请注意,您无法在上面选择父类别,只能选择子类别(您可能希望如此)。显然,如果你有很多只有一个子类别的组(它复制了父类别名称),那么这不是很有效,你可能想看看你是如何构建类别的,或者你可能想要放弃完全optgroup
并在视觉上缩进每个类别下子类别的标签。这样每个类别(包括父母)都会成为option
并且可以选择,但您可能不需要。
答案 1 :(得分:0)
您最好的选择是拥有一个存储可用类别的Category
表。然后,使用每行的id,在articles表中创建一个category_id
字段,以保存每篇文章的类别ID。这将是类别表的外键。
然后,您将获得有关该文章类别的信息。相反,您可以选择给定类别中的所有文章。