2012-02-10 15 views
5

投稿した記事をSQLデータベースに分類すると、記事を特定のカテゴリに投稿したいときに、そのカテゴリに投稿する記事を選択するドロップダウンメニューが表示されます。私たち、製品、およびサポートについての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

カテゴリの一例であるあなたの最善の策は、利用可能なカテゴリを格納Categoryテーブルを持つことです。次に、各行のIDを使用して、記事テーブルにcategory_idフィールドを作成して、各記事のカテゴリIDを保持します。これはカテゴリテーブルへの外部キーになります。

あなたはその記事カテゴリに関する情報を取得します。逆に、特定のカテゴリからすべての記事を選択できます。

1

最初の見た目では、カテゴリ構造のネストされた配列を作成するための構造を実装するための単純なテーブルが必要なようです。 parent_id == 0のカテゴリはoptgroupで、各サブカテゴリはとして各親の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> 

あなたは明らかその後、カテゴリテーブルにリンクする記事テーブルで選択から値を格納することができます。上記の親カテゴリは選択できませんが、サブカテゴリのみを選択することはできません。明らかに、親カテゴリの名前を複製するサブカテゴリが1つしかないグループがたくさんある場合は、これはあまり効率的ではなく、カテゴリをどのように構成しているかを見たい場合もあります。 optgroupは、各カテゴリのサブカテゴリのラベルを完全に視覚的にインデントします。そうすれば、すべてのカテゴリ(親を含む)はoptionとなり、選択することができます。

関連する問題