作者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