huashily 发表于 2010-6-2 19:01:08

写CMS遇到的下拉列表问题

这几天练习CI做一个CMS后台,在添加栏目下拉列表时遇到了一个并不影响运行的PHP错误,一直没解决,故想到拿来和大家一起讨论,请高手给看看,先表示感谢了!
是一个二级栏目添加问题:
我在控制器中写有一条获取数据库内容的语句:
$data['getnav']=$this->Mcms->get_nav();
调用模型Mcms.php中的方法get_nav(),将返回的数据存入数组变量$data['getnav']
视图文件createcate.php接收传来的变量$getnav
通过print_r($getnav);看到其内容如下(给大家提供参考):
Array
(
    => Array
      (
             => 1
             => 教育技术应用
      )
    => Array
      (
             => 2
             => PHP网站设计
      )
    => Array
      (
             => 4
             => 多媒体技术应用
      )
    => Array
      (
             => 5
             => 程序设计语言
      )
    => Array
      (
             => 6
             => PHPer的生活趣事
      )
    => Array
      (
             => 7
             => 胡乱加一个栏目
      )
    => Array
      (
             => 8
             => 再来一个栏目
      )
)
为了能使用CI的form_dropdown('nav',$opt);将栏目名name的值放到一个下拉列表中,我需要把这个数组中mid的值作为一个新数组的索引,我这样构造新数组:
foreach($getnav as $row)
{
   $opt[$row['mid']] .= $row['name'];
}
print_r($opt);显示:
Array
(
    => 教育技术应用
    => PHP网站设计
    => 多媒体技术应用
    => 程序设计语言
    => PHPer的生活趣事
    => 胡乱加一个栏目
    => 再来一个栏目
)
这正是我所需要的!(但报错了,如果有其他办法实现这一步也是我请求帮忙之所在)
应用到下拉列表中也很成功:
echo form_open('admin/createcategory');
echo form_dropdown('nav',$opt);
echo form_input('name');
echo form_submit('','创建');
echo form_close();
生成的Web页完全符合预期的要求:源代码中“栏目名称和栏目id(这里是value的值)是一一对应的”,(栏目id=3是我事先有意删除的):
<form action="http://localhost/ci_/index.php/admin/createcategory" method="post">
<select name="nav">
<option value="1">教育技术应用</option>
<option value="2">PHP网站设计</option>
<option value="4">多媒体技术应用</option>
<option value="5">程序设计语言</option>
<option value="6">PHPer的生活趣事</option>
<option value="7">胡乱加一个栏目</option>
<option value="8">再来一个栏目</option>
</select>
<input type="text" name="name" value=""/>
<input type="submit" name="" value="创建"/>
</form>
一切都那样的如愿,可是非常遗憾的是他同时报错,诸如下面的七个无效索引错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined index: 5
Filename: admin/createcate.php
Line Number: 7
既然有错,为什么还正常运行,这个错误怎样排除或修改?
有没有别的好办法,使我能用两个数组的元素值构造出一个新数组(即:新数组的键值是其中一个数组的元素值,新数组的元素值是另一个数组的元素值)
请高手帮着解决或出招修改一下。

lcnphp 发表于 2010-6-2 22:09:08

$opt[$row['mid']] .= $row['name'];等号前面多了一个点,会不会是这个?还有,头像是你本人吗

visvoy 发表于 2010-6-2 22:30:26

ls正解,眼睛够毒辣:lol

naffan 发表于 2010-6-2 23:02:19

很佩服沙发的毅力看了这段代码。lz的问题虽然很明确但是字太多了~帮顶

huashily 发表于 2010-6-3 08:52:25

回复 2# lcnphp


    感谢你耐心地、仔细的研读,“.=”是没差的。我发完这个贴,又将这部分构造新数组的代码拿到外面(脱离CI环境)测试是没有任何问题的。
向年轻人学习,愿与青年人为伍。头像是我本人,如果缺少幽默感,回头我换一个。

huashily 发表于 2010-6-3 09:10:17

感谢两位的帮助,问题得到解决.

huboo82 发表于 2010-6-3 15:17:29

向你学习,终身学习,学习终身,学习让人年轻

觉醒梦魔 发表于 2012-12-7 16:36:58

怎么解决的分享下
页: [1]
查看完整版本: 写CMS遇到的下拉列表问题