我正在實施基於this建議的標籤雲系統。 (但是,我沒有使用外鍵)PHP標籤雲系統
我允許多達25個標籤。我的問題是,我如何處理項目的編輯?我有這樣的項目添加/編輯頁面:
標題: 說明: 標籤:(例如數據)的電腦,圖書,網絡,設計
如果別人在編輯一個項目的詳細信息,我需要刪除所有首先從Item2Tag表中添加標籤,然後添加新元素?例如,有人改變了數據這樣:
標籤(例如數據)的電腦,圖書,網絡,報紙
我是否需要刪除所有來自Item2Tag表標籤,然後添加這些元素?這似乎效率低下,但我可以找到更有效的方法。
另一個問題是用這種方法是,如果有人編輯描述但不更改標籤框,我仍然需要從Item2Tag表中刪除所有元素並添加相同的元素。
我不是一個有經驗的PHP編碼器,所以你可以提出一個更好的方法來處理這個問題嗎? (純PHP/MySQL的解決方案是優選的)
由於提前,
感謝答案,但它並沒有完全回答我的問題。如果我使用這個查詢,數據庫中會存在舊標籤。如果你看問題中的示例數據,我還需要從中刪除「設計」標籤。對於第二個問題,我無法驗證標籤框是否更改。我如何驗證它? (看來唯一的方法是在更新行和比較它們之前再次請求所有標籤,這似乎效率低下,我相信對於所有問題應該有更好的解決方案。) – deniz 2010-01-01 10:32:07
好的我想我在那裏有點困惑! 您可以通過保持標籤與物品的散列來判斷標籤是否已更改,例如,md5(「computer」+「book」+「web」+「design」),然後只有在存儲的散列和新的標記集合的散列不同時才更新標記。這會阻止您在刪除它們並重新更新之前獲取所有標籤。 Jimmy Shelter的回答如下,使用delta是另一個好辦法。您可以通過現有標籤或散列通過獲取或發佈來保存您在處理更新時不得不查看它們。 – mdm 2010-01-02 17:25:39