2012-10-01 76 views
0

好吧,我有一個動態頁面,人們可以在該城市發佈活動,我們將稱之爲city.php。爲了到達頁面,你必須從states.php中選擇一個狀態,然後從allcities.php中選擇一個城市。州和城市都在mysql數據庫中。在city.php頁面上,您可以點擊「添加事件」,它會將您帶到createevent.php,您可以在其中創建並添加一個顯示在city.php上的事件。但這裏是我想要做的:創建/編輯一個php動態頁面

我想讓city.php成爲發佈該城市不同事物的中心點。我想要一個事件,新聞,工作和出售的頁面。在city.php上,您將爲那些帶您訪問諸如events.php,news.php,jobs.php和sale.php等頁面的頁面選擇一個鏈接。我如何使所有這些頁面保持動態並與所選城市相關?我玩弄了一圈,也弄不清楚。

+0

這是相當多的頁面加載。考慮切換到使用基於ajax的系統,該系統根據狀態選擇動態加載城市,然後將選定的城市保存在會話變量中,以便其他所有頁面均可使用。 –

回答

0

我不確定我是否瞭解你,但是你想讓變量跨越到其他頁面嗎?看看PHP使用的會話。會話非常方便,它基本上允許您將站點範圍的變量關聯到每個用戶。

http://php.net/manual/en/features.sessions.php

在每個頁面的頂部

基本上只是把:

session_start(); 

然後分配/訪問會話變量,你只要致電:

$_SESSION['city'] = $city; 

echo $_SESSION['city']; 
+0

我認爲這可能是我正在尋找的,一旦用戶點擊該頁面,然後我想我可以做一個查詢來提取所有已經在該數據庫中輸入的信息 –

+0

您可以查詢數據庫每次或將其存儲在會話變量中。我建議每次查詢數據庫是否有大量的信息。會話變量佔用服務器上的內存,所以你不想在那裏存儲太多的內容。會話變量被設置並逐頁傳送。 –

+0

似乎無法做我想在這個評論中,將在這裏做一個新的職位:http://stackoverflow.com/questions/12715547/how-to-correctly-use-sessions-for-dynamic-pages –

1

在PHP中有很多方法可以做到這一點。聽起來我個人不同意你的方法。我可能是錯誤的,雖然你看起來像是在說什麼。

正如亞當所說,$ _SESSION是第一件事。您還可以查看到$ _COOKIE: http://php.net/manual/en/features.cookies.php

或只是通過城市ID作爲$ _GET變種: http://www.yoursite.com/events.php?city=2

然後在PHP像

$city_id = $_GET['city']; 
+0

傳遞重要網址中的網站範圍變量通常非常糟糕,但在這種情況下,我認爲這是個好主意。它允許讀者輕鬆切換到另一個城市,使您的網址易於理解,並且意味着即使將網址添加書籤或粘貼到電子郵件或其他內容中,該網址仍會繼續到正確的位置。 – octern

0

很普通的,但關鍵是看它在關係數據庫結構中。顯示很容易,所以請確保新聞,工作,事件表具有id_city用於構建正確的查詢。

實例DB風格回答您的評論:

cities : id_city | city_name | city_slug | id_state 
events : id_event | id_city | event_name | other_event_data | ... 
jobs : id_jobs | id_city | job_name | job_salary | etc. 

所以用戶點擊yoursite.com/washington

然後你就可以查詢來自URL(這裏是華盛頓),如:

SELECT id_city FROM cities WHERE city_slug = "washington" 

你現在得到了id_city。然後,如果它是工作,

SELECT * FROM jobs WHERE id_city = "above gotten id_city" 

希望這會有所幫助。

+0

我讀了兩遍,我不知道你在這裏說了什麼。 –

+1

我試圖提請注意,如果他想存儲基於城市選擇的工作,新聞和事件,那麼假設他正在使用數據庫並不是很遠。在創建活動,新聞等時,如果他將城市ID發佈並存儲到數據庫以獲取相關性,那麼通過城市ID等於發佈城市ID的方式獲取與所選城市有關的所有新聞相當容易。 – 2012-10-02 00:02:49

+0

是的,我正在使用數據庫,什麼是創建其他動態頁面的最佳方法,session_start似乎並沒有這樣做。 @yahya –