[請益] 動態兩階式選單

看板PHP作者 (我 有我的倔強...)時間19年前 (2006/04/19 17:43), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/1
請教大家~~ 我想寫一個兩階連動的下拉式選單,選單的項目是來自讀取資料庫(access)的資料表 資料庫有兩個資料表(level_1和level_2) ╭───────────────────────────╮ │ │ ┌────┬───────┐ ┌────┬──────┬────┐ │ID(文字)│ NAME(文字) │ │ID(文字)│ NAME(文字) │level_1 │ ├────┼───────┤ ├────┼──────┼────┤ │ 01 │ 水果 │ │ 0101 │ 蘋果 │ 01 │ ├────┼───────┤ ├────┼──────┼────┤ │ 02 │ 餅乾 │ │ 0102 │ 葡萄 │ 01 │ │ ︰ │ : │ ├────┼──────┼────┤ │ 0201 │ 可口奶滋 │ 02 │ ├────┼──────┼────┤ │ 0202 │ 旺旺仙貝 │ 02 │ │ : │ : │ : │ level_1 level_2 從網路找了php(mysql)+javascript的範例改寫 範例:http://tw.knowledge.yahoo.com/question/?qid=1405111610058 現在執行上有三個問題 1.第一層的選項沒有辦法停住,會一直跳回"請選擇" 2.第二層的選項沒有辦法隨著第一層出現,但如果把sql語法中的"where"部份拿掉 就可以出現第二層選單的項目 3.另外再請教一個問題,在範例中"form"的地方(如下所示)為什麼要加SID這個變數呢?? <form method=POST action= insert_success.php".SID."> "; 歸出徵結所在就是第一層的"id"沒有辦法成功取得(請看下面程式粉紅色部份) 雖然知道原因了可是不知道怎麼修改程式才對,所以請各位幫幫忙指點迷津~~ 謝謝!!<(_ _)> 我的程式碼: <script language="JavaScript" type="text/JavaScript"> <!-- function MM_jumpMenu(targ,selObj,restore){ //v3.0 eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'"); if (restore) selObj.selectedIndex=0; } //--> </script> <?php $dsn ="Food"; $conn = odbc_connect($dsn, "", "") or die(odbc_error()); $sql = 'select * from level_1'; $result = odbc_exec($conn, $sql) or die(odbc_error()); echo "第一級:<form method=get action= mymenu.php".SID."> "; echo "<select name='level1' onChange=MM_jumpMenu('parent',this,0)><option >請 選擇</option>"; if ((odbc_num_rows($result) !=0)) { while($row = odbc_fetch_row($result)) { $id = odbc_result($result,'id'); $name = odbc_result($result,'name'); echo "<option value=?level1=$id"; if ($_GET['level1'] == $id) { echo "selected"; } echo ">$name</option>"; } } echo "</select>"; echo "第二級:<select name=level2><option >請選擇</option>"; if(empty($_GET['level1'])) { $_GET['level1']=""; } else { $sql2 = 'select * from level_2 where level_1 ="'.$_GET['level1'].'"'; $result2 = odbc_exec($conn,$sql2) or die(odbc_error()); while($row2 =odbc_fetch_row($result2)) { $id = odbc_result($result2,'id'); $name = odbc_result($result2,'name'); echo "<option value=$id>$name</option>"; } echo "</select>"; } ?> </form> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.154.197 ※ 編輯: Uihc 來自: 140.112.154.197 (04/19 18:24)

04/20 13:35, , 1F
我猜是你table名稱跟欄位名稱一樣[level_1]
04/20 13:35, 1F

04/20 13:36, , 2F
先試試將欄位名稱換掉,下語法時最好加上`欄位名稱`
04/20 13:36, 2F
文章代碼(AID): #14HWOoCM (PHP)
文章代碼(AID): #14HWOoCM (PHP)