+ -
当前位置:首页 → 问答吧 → 【已解决】从数据库调用数据,传值到下拉菜单

【已解决】从数据库调用数据,传值到下拉菜单

时间:2010-04-19

来源:互联网

通过以下函数创建下拉菜单

复制代码
  1. function CREATE_SELECTION($inputText,  $checkValue, $name, $ID="" , $script="")
  2. {
  3.     $separate = explode("/s/",$inputText);
  4.     $length = count($separate);
  5.     $result = "";
  6.     $result .=  "<select name=\"$name\" ";
  7.     if($ID) $result .= " id=\"$ID\" ";
  8.     $result .= " $script >";
  9.     for($i=0; $i < $length; $i++)
  10.     {
  11.         $separate[$i] = trim($separate[$i]);
  12.         if(!$separate[$i]) continue;
  13.         $tmpOption = explode("/o/", $separate[$i]);
  14.         $result .= "<option value=\"" . trim($tmpOption[1]) . "\"";
  15.         if($tmpOption[2]) $result .= " $tmpOption[2] ";
  16.         if(trim($tmpOption[1]) == $checkValue)
  17.             $result .= " selected=\"selected\"";
  18.         $result .= ">$tmpOption[0]</option>";
  19.     }
  20.     $result .= "</select>";
  21.     return $result;   
  22. }


以下代码为HTML页面调用PHP函数

               
复制代码
  1.   $options = "/s/Select one/o/";
  2.                   $script = "formId=\"newRetainerForm\" onchange=\"$.SetRetainerNumber();\"";
  3.                   $sQuery = "SELECT NAME FROM `admin_company`";
  4.                   //echo $sQuery;exit;
  5.                   $mydb->Query($sQuery,10);
  6.                   for ($i=0;$i<$mydb->total[10];$i++)
  7.                   {
  8.                       $rows = $mydb->result[10];
  9.                     //echo $rows[NAME];
  10.                     $key = strtolower($lang)=='en'?"LABEL":strtoupper($lang)."_LABEL";
  11.                     $options .= "/s/".$rows[$key]."/o/".$rows['NAME'];
  12.                     //echo $options;
  13.                     $mydb->Next(10);
  14.                   }
  15.               echo CREATE_SELECTION($options, $branch,"branch_name","branch_name",$script);     


经测试,能正常从数据库的admin_company表中读取数据。问题是,下拉菜单就是不显示$rows['NAME'] 的值,附截图一张,请各位高手指点下,本人不胜感谢。        


谢谢各位的帮助,此问题成功解决。$rows[$key]没有获取到值

'700')this.width='700';if(this.offsetHeight>'700')this.height='700';" title="Click Here To EnLarge">
       
[ 此帖被莫愁在2010-04-19 18:27重新编辑 ]

作者: 莫愁   发布时间: 2010-04-19

怎么没有人回帖啊?

作者: 莫愁   发布时间: 2010-04-19

看不懂

作者: memory   发布时间: 2010-04-19

我也有点

作者: gin   发布时间: 2010-04-19

zhangyongwei可能有办法,呵呵

作者: 莫愁   发布时间: 2010-04-19

又是猪猪头?看来你得罪的人不少啊
引用
引用第2楼memory于2010-04-19 16:26发表的  :
看不懂

作者: 莫愁   发布时间: 2010-04-19

哈哈,我可是没使用过猪头卡

作者: gin   发布时间: 2010-04-19

美女~
你这里$separate = explode("/s/",$inputText);//肯定只有一条数据啊,当然只有一个下拉框哦~~
你不信,echo $length; 看看~~

作者: figo0505   发布时间: 2010-04-19

应该是你的数据查询有问题,我直接赋值是能正常显示的:
echo CREATE_SELECTION('/s/Select1/o//s/Select2/o//s/Select3/o/','Select1','sel');
你可以把$options的值打印出来和
/s/Select1/o//s/Select2/o//s/Select3/o/
比较一下,其实CREATE_SELECTION的$inputText传一个数组好一些,这样就可以直接循环不用分割了。

作者: riyan   发布时间: 2010-04-19

鄙视楼上的,好不容易有一次在MM面前表现的机会就被你给抢了,

作者: figo0505   发布时间: 2010-04-19

好吧,我不抢你的风头了

作者: riyan   发布时间: 2010-04-19

呵呵,明白了,谢谢riyan。

引用
引用第8楼riyan于2010-04-19 17:04发表的  :
应该是你的数据查询有问题,我直接赋值是能正常显示的:
echo CREATE_SELECTION('/s/Select1/o//s/Select2/o//s/Select3/o/','Select1','sel');
你可以把$options的值打印出来和
/s/Select1/o//s/Select2/o//s/Select3/o/
比较一下,其实CREATE_SELECTION的$inputText传一个数组好一些,这样就可以直接循环不用分割了。

作者: 莫愁   发布时间: 2010-04-19

引用
引用第7楼figo0505于2010-04-19 17:00发表的  :
美女~
你这里$separate = explode("/s/",$inputText);//肯定只有一条数据啊,当然只有一个下拉框哦~~
你不信,echo $length; 看看~~


帅哥你好,我打印出的长度是正确的,7个。

作者: 莫愁   发布时间: 2010-04-19

看看喽,多谢

作者: wangqian339   发布时间: 2010-08-12