2010-05-29 34 views
1

我需要一個php文件三個下拉框或多個選擇框。我該如何在php中創建動態下拉框?

來自這些框的條目在mysql數據庫中。

單個問題是第三格中的條目取決於第二個條目,而第二個條目取決於第一個條目。

有人可以幫忙嗎?知道任何例子?

+0

@AvatarKava:完全可以沒有JavaScript。爲什麼JavaScript標籤,當OP特意詢問PHP? – EFraim 2010-05-29 15:33:57

+1

@EFraim你將如何做到這一點*沒有* Javascript? – Pointy 2010-05-29 15:35:55

+0

@EFraim:沒有JS,你打算怎麼做? Youd必須使用js根據前面列表中的選項加載每個連續列表中的選項。您可以將所有選項加載到JS數據結構中,因此您不必返回服務器onChange,但仍然可以需要使用js來填充值。 – prodigitalson 2010-05-29 15:37:07

回答

3

基本上有3種方式來實現這一目標:

  1. 在下拉菜單的onchange期間,使用JavaScript到submit()表單到服務器端,並讓PHP根據所選下拉值相應地加載選項並渲染子級下拉菜單。技術上最簡單的方法,也是用戶最不友好的方式。您可能還想要恢復表單的所有其他輸入值。

  2. 讓PHP在JavaScript數組中填充所有可能的子元素下拉值,並使用JavaScript函數填充和顯示子元素下拉菜單。有點棘手,當然如果你還不懂JavaScript的話,但是這對用戶更友好。唯一需要注意的是,當你有相當多的下拉項目時,這是帶寬和內存效率低下的問題。設想三個下拉菜單,每個下拉菜單可以包含100個項目,這意味着100 * 100 * 100 = 100萬項目的JS數組。該頁面可能會增長超過1MB的大小。

  3. 讓JavaScript向服務器端發出異步(ajaxical)HTTP請求並相應地填充並顯示子窗口。結合1和2中的最佳選項。高效和用戶友好。 jQuery在這方面非常有用,因爲它消除了關於跨瀏覽器兼容性關於發送Ajax請求和遍歷HTML DOM樹的顧慮。否則,你會得到雙倍,三倍甚至更多的代碼來實現這一目標。


如果讓知道在評論或你的問題的更新哪種方式,你更喜歡和什麼地方你正在同時實施解決方案stucking,那麼我也許會更新的答案,包括一個基本的開球的例子。

0

我從葡萄牙來的,所以,我們做什麼它是基於葡萄牙語,從來沒有少,我們已經做了很多工作網站和平臺的與你想要的東西,請點擊...

如果這是你想要的,我可以給你的代碼:

http://www.medipedia.pt/home/home.php?module=farmacia