5

わかりました。これに遭遇したのは私が最初ではないと確信しています。解決策を探すのに適切な単語がわからないだけです。次のデータベーステーブルを検討してください(この質問のために簡略化されています)。

データベーステーブルhttp://www.nth-root.nl/public/images/wolf/cat_attr.png

写真でわかるように、製品カテゴリを保持するカテゴリテーブルと、さまざまな属性を保持する属性テーブルがあります。例:色(衣類用)、容量(mp3プレーヤー用)など。

写真の中央にある3番目の表は、属性をカテゴリにリンクしています。

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

バックエンドhttp://www.nth-root.nl/public/images/wolf-commerce/edit_category.png

jqueryを使用してドロップダウンを追加/削除します。

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

怠惰な解決策は次のようになります(そして、はい、私は過去にこれを行いました):
1.指定されたカテゴリのcategory_attributeの現在のすべての行を削除します
2.次に、選択したすべての属性をcategory_attributeに挿入します

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

だから私は正しい挿入、更新、削除を行う方法を探しています:
1。$ _POSTに表示されない行を削除します(ドロップダウンは削除されました)
2。変更された行を更新します(からの別のオプションドロップダウンが選択されています)
3。新しい行を挿入します(新しいドロップダウンが追加されました)

どうすればいいのか、どこで良い例が見つかるのかわかりません。いくつかのajaxを使用するのはおそらく簡単ですが、$ _ POST値をデータベース内の値と比較して、純粋にphpであるソリューションを探しています。

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

-編集-
質問を明確にするためにいくつかの写真を含めましたが、評判が低すぎるため、スタックオーバーフローはそれらを含めることを拒否しました。したがって、画像がなくても質問が十分に明確であることを願っています。

-edit2-十分な評判を得たので、画像を追加しました。

前もって感謝します、

ニック

4

1 に答える 1

2

挿入と更新:
IDレコードを使用して非表示の入力を挿入できます。
新規の方はこのIDをリセットするので、挿入を行います。
埋めたIDを更新します。本当に変更されたアイテムの更新のみを実行したい場合は、値「0」で非表示の入力「UPDATED」を作成できます。javascriptを介して、コンボが変更されたかどうかを確認できるため、入力は「1」とマークされます。

除外:
同様に除外を行うことができ、ユーザーがクリックして削除したときに削除する必要がある非表示の入力スコアリングレコードを作成します。

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

于 2012-11-05T21:50:31.737 に答える