2012-11-05 15 views
5

私はこれに最初に遭遇するのではないと確信しています。解決策を探す正しい言葉がわかりません。 (この質問のために簡略化)は、次のデータベーステーブルを考えてみましょう:

database tables http://www.nth-root.nl/public/images/wolf/cat_attr.png

あなたが写真で見ることができるように、製品カテゴリと異なる属性を保持する属性テーブルを保持しているカテゴリテーブルがあります。たとえば、色(衣類用)、容量(mp3プレーヤー用)など。

3番目の表は、属性をカテゴリにリンクします。

バックエンドには、カテゴリを編集(または追加)するためのフォームの「カテゴリを編集」ページがあります。同じページで、現在の商品カテゴリにリンクされている属性を管理するためのドロップダウンリストのリストを表示したいと思います。

backend http://www.nth-root.nl/public/images/wolf-commerce/edit_category.png

それは削除/ドロップダウンを追加するためにjqueryのを使用しています。

問題は、フォームの$ _POSTデータを使用して、category_attributeテーブルのデータを操作する方法です。

怠惰な解決策は次のようになります(はい、私は過去にこれをやった):
1.次に

をcategory_attributeするために選択したすべての属性を挿入し、指定されたカテゴリ
2のcategory_attributeに現在のすべての行を削除します。

しかし、これはあまり効率的ではありません。誰かがカテゴリのタイトルだけを変更したとしても、すべての行を削除して再追加します。

は、だから私は右の挿入、更新および削除を行うための方法を探しています:
1.
2.アップデート(ドロップダウンが除去されている)$ _POSTに表示されません行を削除します変更された行(ドロップダウンから別のオプションが選択されています)
3.新しい行を挿入します(新しいドロップダウンが追加されました)

私はそれを行う方法や場所を見つけることができません良い例え。これはおそらくいくつかのajaxで行うのは簡単ですが、純粋にPHPのソリューションを探しています。$ _POSTの値をデータベースの値と比較しています。

誰かが最高の(そして最も効率的な)解決策を説明する良い記事を知っているなら、私に感謝します。私は非常に感謝しています。

-edit-
私の質問を明確にするためにいくつかの写真が含まれていましたが、私の評判が低すぎるためスタックオーバーフローが拒否されました。

-edit2- 今私は十分な評判を持っており、画像を追加しました。

事前のおかげで、

ニック

+1

あなたのgoogle fuに欠けているかもしれないボキャブの一部。 http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model – ficuscr

+1

また、category_attributeテーブルは、join/junction/many-to-many /ピボットテーブルhttp:/と呼ばれます。 /en.wikipedia.org/wiki/Junction_table –

+0

あなたはjavascriptで新しいアイテムを挿入しますか? –

答えて

2

INSERTおよびUPDATE:
あなたはIDレコードを持つ隠し入力を挿入することができます。
新しい人はこのIDをリセットするので、挿入します。
あなたの身分証明書が更新されます。更新のみを実行したい場合は、項目を実際に変更した後、値「0」の隠し入力「更新」を作成することができます。 javascriptを使用すると、コンボが変更されたかどうかを確認できます。その結果、入力は「1」とマークされます。

除外:
同様に、ユーザーが削除するクリックしたときに削除すべきレコードを得点隠し入力を作成し、排除して行うことができます。

それがあなたにとって適切な方法であるか、より実用的な解決策が期待されるかわかりません。

+0

ありがとう!これは確かに私を始めさせるでしょう。 –