作者Uihc (我 有我的倔強...)
看板PHP
標題[請益] 動態兩階式選單
時間Wed Apr 19 18:23:16 2006
請教大家~~
我想寫一個兩階連動的下拉式選單,選單的項目是來自讀取資料庫(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)
1F:推 blackbing:我猜是你table名稱跟欄位名稱一樣[level_1] 04/20 13:35
2F:→ blackbing:先試試將欄位名稱換掉,下語法時最好加上`欄位名稱` 04/20 13:36