如何对提交给sql数据库的文章进行分类?

时间:2012-02-10 13:04:02

标签: php mysql sql pdo

如何对提交给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>

2 个答案:

答案 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。这将是类别表的外键。

然后,您将获得有关该文章类别的信息。相反,您可以选择给定类别中的所有文章。