用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3456|回复: 7
收起左侧

[讨论/交流] 写CMS遇到的下拉列表问题

[复制链接]
发表于 2010-6-2 19:01:08 | 显示全部楼层 |阅读模式
这几天练习CI做一个CMS后台,在添加栏目下拉列表时遇到了一个并不影响运行的PHP错误,一直没解决,故想到拿来和大家一起讨论,请高手给看看,先表示感谢了!
是一个二级栏目添加问题:
我在控制器中写有一条获取数据库内容的语句:
$data['getnav']=$this->Mcms->get_nav();
调用模型Mcms.php中的方法get_nav(),将返回的数据存入数组变量$data['getnav']
视图文件createcate.php接收传来的变量$getnav
通过print_r($getnav);看到其内容如下(给大家提供参考):
Array
(
    [0] => Array
        (
            [mid] => 1
            [name] => 教育技术应用
        )
    [1] => Array
        (
            [mid] => 2
            [name] => PHP网站设计
        )
    [2] => Array
        (
            [mid] => 4
            [name] => 多媒体技术应用
        )
    [3] => Array
        (
            [mid] => 5
            [name] => 程序设计语言
        )
    [4] => Array
        (
            [mid] => 6
            [name] => PHPer的生活趣事
        )
    [5] => Array
        (
            [mid] => 7
            [name] => 胡乱加一个栏目
        )
    [6] => Array
        (
            [mid] => 8
            [name] => 再来一个栏目
        )
)
为了能使用CI的form_dropdown('nav',$opt);将栏目名name的值放到一个下拉列表中,我需要把这个数组中mid的值作为一个新数组的索引,我这样构造新数组:
foreach($getnav as $row)
{
     $opt[$row['mid']] .= $row['name'];
}
print_r($opt);显示:
Array
(
    [1] => 教育技术应用
    [2] => PHP网站设计
    [4] => 多媒体技术应用
    [5] => 程序设计语言
    [6] => PHPer的生活趣事
    [7] => 胡乱加一个栏目
    [8] => 再来一个栏目
)
这正是我所需要的!(但报错了,如果有其他办法实现这一步也是我请求帮忙之所在)
应用到下拉列表中也很成功:
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
既然有错,为什么还正常运行,这个错误怎样排除或修改?
有没有别的好办法,使我能用两个数组的元素值构造出一个新数组(即:新数组的键值是其中一个数组的元素值,新数组的元素值是另一个数组的元素值)
请高手帮着解决或出招修改一下。
发表于 2010-6-2 22:09:08 | 显示全部楼层
$opt[$row['mid']] .= $row['name'];  等号前面多了一个点,会不会是这个?还有,头像是你本人吗
发表于 2010-6-2 22:30:26 | 显示全部楼层
ls正解,眼睛够毒辣
发表于 2010-6-2 23:02:19 | 显示全部楼层
很佩服沙发的毅力看了这段代码。lz的问题虽然很明确但是字太多了~帮顶
 楼主| 发表于 2010-6-3 08:52:25 | 显示全部楼层
回复 2# lcnphp


    感谢你耐心地、仔细的研读,“.=”是没差的。我发完这个贴,又将这部分构造新数组的代码拿到外面(脱离CI环境)测试是没有任何问题的。
向年轻人学习,愿与青年人为伍。头像是我本人,如果缺少幽默感,回头我换一个。
 楼主| 发表于 2010-6-3 09:10:17 | 显示全部楼层
感谢两位的帮助,问题得到解决.
发表于 2010-6-3 15:17:29 | 显示全部楼层
向你学习,终身学习,学习终身,学习让人年轻
发表于 2012-12-7 16:36:58 | 显示全部楼层
怎么解决的分享下

本版积分规则