台灣最大程式設計社群網站
線上人數
2187
 
會員總數:245401
討論主題:189189
歡迎您免費加入會員
討論區列表 >> PHP >> 二層連動下拉式選單 關聯式新增資料到資料庫
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
二層連動下拉式選單 關聯式新增資料到資料庫
價值 : 20 QP  點閱數:7035 回應數:18

樓主

Fredy
門外漢
0 5
96 10
發送站內信

各位大大請教一下!
目前在做一個新增資料的表單
其中有一項是 二層連動的下拉式選單(大分類 帶出 小分類)
因為要實現不換頁面 產生下拉選單(原本希望可以查詢資料庫來產生QQ)
所以目前是用陣列寫死在裡面 用JS來做 相關代碼約如下


我有兩個關聯的資料表
EX: pro 和 pro_category
"pro"和"pro_category"這兩個資料表有一個共同欄位是"code"(數字)
"pro_category"有兩個欄位(大小分類)"bigcat"和"smallcat"存大小類別的對應代碼
另外兩個欄位"bigcat_value","smallcat_value"存大小類別對應的文字(即下拉選單呈現的文字)
資料表是直接用DB新增的 大概像下方 大分類代碼(bigcat) 對應 數個小分類代碼(smallcat) code流水號排列
bigcat bigcat_value smallcat code
1 A 1 1
1 A 2 2
2 B 1 3
3 C 1 4
3 C 2 5
3 C 3 6

我想問的是說 如果我要新增資料到 資料庫
要如何取到這兩個連動選單的value,進而可以查詢出對應的"code"(代碼)
請各位大大幫忙 感謝!!

搜尋相關Tags的文章: [ 連動下拉式選單 ] ,
本篇文章發表於2016-02-22 16:53
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
16樓
作者回應

Fredy
檢舉此回應
謝謝皮大大教導各種實現方法
您的文章寫得非常詳細!
可否分享您的BLOG~
angularJS聽很多人說很棒
我還真的第一次接觸 QQ

我可能還需要時間吸收
目前還沒做出功能
我卡在不知道如何取js的value存在php變數中
讓我可以對資料庫做動作

try過把查詢結果 存成key->value的陣列
可是少了第一層選單的觸發值 用for迴圈遞增的結果也不像= =
我會再多看看PHP+AJAX的教學
感謝您!

TO版大
有嘗試造您方式改
不過還是取不到值
我會再多看看
謝謝!
本篇文章回覆於2016-02-24 17:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
17樓
回應

皮皮快跑
檢舉此回應
其實我不建議你看成「PHP+AJAX」,而是把他們當成二回事。
簡單來說,php的部份你把他當成只是用做於處理資料跟拋出資料就好了。
畫面顯示的東西經由js接回資料後由js去處理元件展示的部份。
jquery稍微麻煩一點的地方是在於view的部份你要自己把元件依照資料插進去。
angularJS的好處就是modelView的概念,也就是依照資料去變化你視圖的內容。
你可以在html中去配置基本的樣式,最後由資料來決定整個展現的內容。
其實我還有準備一個範例,就是關於透過ajax來進行二層式選單,一樣是angularJS的範例,晚一點我po上來。
我是有部落格不過很少在寫資料(我寫文章的地方都很散就是了。)
有時間我再整理起來。
sam問(我要被十個打)的個人程式部落格
本篇文章回覆於2016-02-24 17:59
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
18樓
回應

皮皮快跑
檢舉此回應
最後這個範例是angularJS的post。
一開始的php code是先取得第一層的資料。(想像成就是你資料庫要取給其一個select的資料。)
然後後面的post是將選擇的資料透過ajax傳給select_option_data.php去取回對應的第二層欄位資料。
其實我想說如果你稍稍理解這樣的動作模式,我想jquery要怎麼處理大致也應該會明白了。


取資料的檔名:select_option_data.php

資料來源還是來自同一個json檔就是了。
這邊只是示範一個取資料的方式流程,至於資料庫要怎麼處理就看個人囉。
這邊的範例一樣都是貼上去就能使用了。
要注意的是post中有一段跟我昨天說的解決post傳輸問題的解法不太一樣。
因為昨天的那個解法其實是要掛載jquery的。那是配合jquery提供的$.param()的方法。
但是今天寫的這個解法就是純js的解法了(不掛jquery時的作法)
本篇文章回覆於2016-02-24 23:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.