2011-01-19 1 views
3

カテゴリレベルを別のテーブルに保存すると、カテゴリとサブカテゴリ、およびそのレコード(分類された広告)をリストして参照するソリューションを探しています。過去に私は隣接モデルを使って作業しましたが、私は今このデータベース設定に固執しなければなりません。それは私には新しくあります。私はPHPとMySQLを使用しています。個別のテーブルに保存されているカテゴリとサブカテゴリを選択して参照

サイトは、共通の方法で構成された分類された広告サイトです。ホームページにメインカテゴリリストがあります。カテゴリリンクの1つをクリックしてサブカテゴリのみが表示され、このカテゴリに属する​​広告、あらゆるレベルでそうである。

私は以下の分野で少し混乱しています:

  1. それは私の場合からカテゴリを選択する必要のあるテーブルのスクリプトが知っているようにするために カテゴリをブラウズするときにどのように カテゴリのリンクを構築します以下を考慮する mysql構造ですか?例えば、 "mysite.com/?cat2=4"の場合 の場合、CAT2 テーブルのカテゴリ "4"にアクセスし、 "mysite.com/?cat3=9"の場合は のように、それぞれのカテゴリレベルで別々の パラメータを必要としますか?カテゴリ を識別するために、 CAT3テーブルのカテゴリ "9"にアクセスしていますか?別のパラメータが ではない場合は、どのようにして カテゴリを選択しなければならないのですか?

  2. この場合に重要なのは、ほとんどの 、 SEO フレンドリーリンクを構築するための最良の方法は何ですか?そして、どのようにmysqlは カテゴリを選択するテーブルを知っているでしょう から?私は のような最も簡単な解決策を のように使用したいと思います: mysite.com/electronics/television/sony。 私が知る限り、 少なくともcat_id のリンクのどこかに...を含める必要があります。どこに入れますか?レベルの数も含める必要がありますか? に(I カテゴリ リンクを生成するときにその場でラテン語のもの に アクセント付き文字を変更する関数を作成しましたが) 名前は アクセント付き文字と外国語であるので、私はそれが に最高だと思うより多くのカテゴリを、それを複雑にそれらのIDでそれらを選択してください。

  3. サンプルはどのように選択されますか は、特定のカテゴリの子供 のカテゴリを選択するように見えますか?

  4. パンくずリスト のナビゲーションはどうすればできますか?

MYSQL構造:

  • 表 "CAT1"(主カテゴリ):

    cat1_id | cat1_name

  • 表 "CAT2"(サブカテゴリ):

    cat2_id | cat1_id | cat2_name

  • 表 "CAT3"(subsubcategory):

    cat3_id | cat2_id | cat3_name

  • 表 "広告":

    ad_id | cat1_id | cat2_id | cat3_id | ad_title | ad_description

おかげで、長い記事のために申し訳ありません。

答えて

1

カテゴリ(タグ)のための私のお気に入りのパターンのURL:

http://mysite.com/articles/brains+zombies+legs+frogs 

+シンボルは、タグのための素晴らしい、とクモ(およびSEO)に友好的です。カテゴリーのテキストを使用することは、意味があるので、クモと人間の両方にとって重要です。 SQLについては

、私はカテゴリやタグを使って何のために2つのテーブルをお勧め:任意のものについて

Categories (id, name, description) 

CategoryRelationships (catID, thingID) 

を、あなたはCategoryRelationshipsを経由して物事にカテゴリーに参加します。たとえば:

SELECT * FROM Things t 
JOIN CategoryRelationships ON thingID = t.ID 
JOIN Categories c ON catID = c.CatID 

結果は、あなたが唯一の各カテゴリの定義、および関係テーブルを介したカテゴリへのリンクの束を持って物事とそのカテゴリのリストになります。

ブレッドクラムについては、若干異なる問題です。ブレッドクラムは、次のいずれか

  • は、サイト階層のナビゲーションを提供する、または
  • ヘルプユーザーはあなたが目指しているブレッドクラムの種類に応じて、その手順

をたどる、あなたは異なるアプローチを取ります。

http://mysite.com/people/zombies/brains/brains 

につながるURIの解析:そのためにあなたがリンクを生成する

people, zombies, brains, brains 

パン粉のシンプルなサイト階層セットの場合、あなたは、単にセグメントのセットを超えるURLとforeachを解析することができます各セグメントに

+0

ありがとうございましたが、私が書いたように、上記のmysql構造体を使用する必要があります。 – komlos

+0

例を挙げてみましょう。ニーズに合わせることができます。各カテゴリの列ごとに1度だけ参加する必要があります。 –

関連する問題