2011-07-31 29 views
0

好了,所以這個問題是不是這麼多的編碼過程,而更像是一個很好的和乾淨的實現代碼activitylist,我計劃建立..路/編碼方法做activitylist /日誌

這activitylist將包含頁面上的所有活動。

所以基本上所有的網頁上進行的操作,它會調用類似的功能insertActivity($stuff)插入有關e.g你只是做了一些活動。

現在我想知道編碼方式,該怎麼做?

我應該有消息,「你只是做了一些」行中以dB爲單位或者我應該有凡在我的PHP文件中我定義了數字1個代表「你只是做了」數字?

有了不存儲在數據庫的信息將幫助我編輯短信對所有activitymessages後,e.g如果消息應改爲「你剛吃的東西」。

應該怎麼做它像我以前關於前調用函數/動作後保存,登錄這個動作到activitylist,或任何其他prefferable辦法做到這一點說的嗎?

我腦子裏想的是什麼只是insertActivity()應該只是插入活動數據庫,通過它得到的輸入($東西)。

真的很感謝一個簡單而乾淨的編碼方式來做到這一點。

回答

1

這是一個不可能的問題。事實上這很難回答,這不是不可能的,因爲不可能給出一個好的答案,這是不可能的,因爲有很多很多不同的好答案,也沒有「正確的」答案。

對於有兩個表有很多需要說的,一個只是用於描述,另一個是有一個外鍵,它將引用一個描述ID。檢索值是簡單的:

SELECT -- your other columns can go here. 
     (SELECT DESCRIPTION FROM DESCRIPTIONS DE 
      WHERE DE.ID = DID.DESCRIPTION_ID LIMIT 1) as ACTIVITY 
      -- I always add a LIMIT in a sub-query... 
     -- your other columns can go here. 
     FROM DID_THINGS DID WHERE USER_ID = 1; 

的MySQL使得這種類型的結構稍微容易一些,如果有活動相當有限的(那些是事先知道的) - 你應該看看ENUM類型。但是,使用ENUM的話,這將成爲修改網站的最煩人的方式。就我個人而言,我喜歡第二個表格選項,我經常使用它。如果我想要讓管理員添加類似「你看過的東西」的內容,我可以簡單地通過Web表單暴露出來,並將隱藏在數據庫中的珍貴密鑰隱藏在沒有人知道的地方,包括我在內。

另一種常見的做事方式是簡單地有一個關聯數組(或一個哈希,或其他)。這樣做的好處是它可能不涉及數據庫連接,它非常簡單,測試和調試非常簡單明瞭。由於這些(除其他外),在國際化腳本中使用這種方法非常常見。問題是,爲了向其中一個陣列添加某些內容,您需要切實執行,修改該文件,然後將該文件重新部署到該站點的所有版本。現在,這通常是非常簡單的事情,但這是一個額外的步驟。要允許用戶添加到列表中是非常困難的(儘管不是絕對不可能的),並且一旦輸入數據就編輯數據更麻煩。

+0

感謝您的回答。我並不是在尋找正確的答案,而更像是如何去做的想法。我忘記了有關第二張桌子的所有信息,並將其用於描述。數組方法並不是真正的選擇,因爲我喜歡另一種方法,所以你不需要編輯任何文件順序來添加/修改描述。我對你的示例SQL有了一些想法:爲什麼在子查詢中添加限制?爲什麼不是內部加入表並連接它們? – Karem

+0

我使用LIMIT作爲子查詢的反應。我收到太多意想不到的「在子查詢中返回的多個值」錯誤,它只是本能的。至於子查詢與連接,不知道。我只是通常這樣做。我沒有想太多。 – cwallenpoole

+0

cwallenpoole謝謝。請你看看這個,從這個解決方案的小問題: http://stackoverflow.com/questions/6893120/php-sql-coding-structure-for-an-activitylist/ – Karem

0

這取決於

  • 將在那裏數百萬行的?
  • 你關心磁盤空間嗎?
  • 將有機會看到該日誌?

你應該看看那些依賴想一想。

1

只存儲一個動作的id是個好主意。您也可以創建「動作」表,您將在其中存儲所有可能的操作。

通過這種方式,您可以安全地保留一些磁盤空間並使解決方案更加靈活。

您應該在動作完成後記錄動作。通過這種方式,您可以驗證操作是否成功。

這個問題很普遍,所以很難提供更具體的答案。如果您需要幫助其他方面,請提供更多信息。