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

[HELP] 困扰了我好几天的问题 就是input类里面的post不能接受数组

[复制链接]
发表于 2015-5-12 20:40:04 | 显示全部楼层 |阅读模式
就是控制器不能用$this->input->post('name'),接收2行input传过来的内容,name一样的话会被覆盖掉
网上查了下,php可以把name设置成name[],在用$_post['name']可以接收
大神可以教教我。。。。。
发表于 2015-5-14 15:11:20 | 显示全部楼层
本帖最后由 greedefoxes 于 2015-5-20 08:56 编辑

同求解答。。我{:soso_e127:}想起来 我也有遇到这个问题。。。就是类似获取checkbox多选框的值。当选中多个,我有时候可以用数组的形式post 有时候用不了,是否因为我引用的bootstrap源文件版本不同,还是因为我不会使用post.                                                                                                                                                                                                                                       
/* View界面  */                                                                                                                                                               <select multiple name="option2" id="option2">
    <?php foreach($users as $user1)  :?>
       <option  value="<?php  echo $user1['id'] ?>">
           <?php   echo $user1['title'];?>
      </option>
   <?php endforeach;?>
</select>
/*Controller端*/
if(!empty($_POST['option2']))
{
        $option2=$_POST['option2'];
        mysql_query('set names utf8');
        $this->db->query("insert into relationship(cid) values('$option2')");
}当我在网页的多选框选中两个进行提交后,只有后一个值插入到了数据库中。额,网页提交时是两个值都提交上去了。。。


post__multiple_q.jpg
发表于 2015-5-14 09:22:44 | 显示全部楼层
代码实测,仅供参考
html:
HTML复制代码
 
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<form action="http://localhost/dilicms/index.php/welcome/getinput" method="post">
    <input type="text" name="name[]"/>
    <input type="text" name="name[]"/>
    <input type="text" name="name[]"/>
 
    <input type="submit" value="submit"/>
</form>
 
</body>
</html>
 
复制代码

Controller代码:
PHP复制代码
 
function getinput(){
    $names = $this->input->post("name");
 
    var_dump($names);
}
 
复制代码

运行结果:
QQ20150514092133.png
 楼主| 发表于 2015-5-15 17:36:01 | 显示全部楼层
class Test_model extends CI_Model{
       
        const TBL_TEST = 'test';

        public function add_test($data){
                return $this->db->insert_batch(self::TBL_TEST,$data);
        }
}

还有

class Test_model extends CI_Model{
       
        const TBL_TEST = 'test';

        public function add_test($data){
                return $this->db->insert(self::TBL_TEST,$data);
        }
}

是不是多维数组和一维数组
我用insert_bacth 就找不到0,1,2键(我插入的是二维数组)

如果这样的话,一维数组和多维数组一起插入的怎么办?
发表于 2015-5-13 08:46:44 | 显示全部楼层
CI也一样的啊, 你把name设置成name[], $names = $this->input->post('name'); $names也是数组。
 楼主| 发表于 2015-5-13 20:11:21 | 显示全部楼层
不会呀,input里面name设置成name[]这样的话,我就接收不到了!
不加的话后面的会覆盖前面的!
数据库不用改吧?还是insert(self::TABLE);?
我试过很多办法也不行,要上吊了
 楼主| 发表于 2015-5-14 10:10:47 CI中国手机版 | 显示全部楼层
忘记说了。。。HTML的没有争议的,就是控制器的代码
$data[name]=$this->input->post('name');
$data[name]=$this->input->post('name');
$data[name]=$this->input->post('name');
然后在载入视图的。。。就是没插进数据库
是不是这个原因
 楼主| 发表于 2015-5-14 10:13:34 CI中国手机版 | 显示全部楼层
这样是不是可以加入到一个字段值里?数据库里的格式应该是["name","name"]这个
发表于 2015-5-14 14:17:14 | 显示全部楼层
請考慮提供你測試的代碼
以及想達到的目的(效果)
這樣方便幫你找出原因
发表于 2015-5-14 15:59:05 | 显示全部楼层
本帖最后由 greedefoxes 于 2015-5-14 16:00 编辑
greedefoxes 发表于 2015-5-14 15:11
同求解答。。我想起来 我也有遇到这个问题。。。就是类似获取checkbox多选框的值。当选中多个 ...

是不是我这样子算是同时 重复提交$_POST['option2'],并不是提交了一个数组。这种提交方法是不是不对?下图 这是post的数组,可是我自己都不明白,貌似我这两处代码一样啊,提交的却......
post[]__multiple_q.jpg

本版积分规则