2010-12-13 78 views
0

我有幾個頁面直接訪問我的數據庫並從表中獲取值。MySQL根據GEO位置返回不同的值?

現在取決於用戶的地理位置,我們想要返回一個不同的值。

我有一個獲取地理位置的PHP腳本,但我試圖找出一種方法來避免跟蹤訪問數據庫的每個頁面以添加此邏輯。

我知道如果網站使用的是MVC架構,我可以將邏輯添加到模型中。不幸的是,事實並非如此。

所以我的問題是,我唯一的選擇是將這個邏輯添加到每個訪問來自數據庫的數據的頁面。還是有沒有更好的方式我不知道?

P.S.我的問題標題可能不是我的問題的最佳描述,但我不確定如何說出它。

+0

每個訪問數據庫的頁面都需要連接到它。是否有包含的文件來執行連接?如果是這樣,你可以簡單地在那裏包含代碼。排除這個句子,我不會提到這聽起來像您的網站急需重大重構。 – webbiedave 2010-12-13 15:08:43

+0

@Webbiedave,是的,我確實有一個處理連接的文件,但是如何在那裏添加邏輯,這會影響包含它的頁面上來自SELECT語句的返回值?是的,我知道它需要重構:)。謝謝 – 2010-12-13 15:12:19

+0

@John - 用戶的地理位置你是指國家還是城市?哪個級別應該確定返回值? – 2010-12-13 15:14:17

回答

0

您不需要將檢測邏輯添加到訪問數據的每個頁面,而是添加到公共頁面,比如索引頁面。你有共同的網頁嗎?

像webbiedave所說,你將不得不對你的查詢進行一些修改來改變數據。

我在一個項目中實現了基於用戶位置的數據顯示。我們不得不顯示一些將由一些導師採取的在線課程列表。根據瀏覽器/註冊用戶的地理位置(國家/地區)顯示課程列表。用戶區域(我猜想在一個國家內)不會改變這樣做的基本邏輯。我們也沒有使用任何框架,所以我覺得這可能是對您有用: -

這大概就是我們所做的: -

1中的地理位置操縱部 -
我們有一個index文件(如框架的前端控制器),該文件針對具有所有用戶地理位置操作相關代碼的每個請求(針對每個模塊)運行。 以下是關於該操作代碼的要點 -
- 我們使用php庫進行檢測 - 檢測用戶位置(我們的國家/地區)並將其存儲在會話中。
- 如果已經存儲在會話中,則不要再次檢測/每次檢測。
- 清除用戶註銷時存儲的地理位置並再次檢測。

2.位置相關的條件,你的查詢
- 現在,你只需要檢測的位置添加到您的查詢在一個地方,把它放在一個函數中,添加一個位置參數,並從調用它的模塊。儘可能重用該功能。