2014-10-27 47 views
1

首先,感谢您的宝贵的时间和兴趣 - 任何输入到初学者非常感谢!Codeigniter:我如何传递多个同名的输入?

如何插入多个输入(多数情况下)多个同名?这里是我的代码:

查看:

//Simplified version, original is a jquery append script 
    Passes: <input type="text" name="passes[]"> 
    Points: <input type="text" name="points[]"> 
    Passes: <input type="text" name="passes[]"> 
    Points: <input type="text" name="points[]"> 

控制器:

//Loops through a table like form for inputting stats 
function add_stat() { 
    $i = 0; 
    foreach ($this->input->post('points') as $points) { 
    $dataSet1[$i++] = array (
      'points' => $points 
    ); 
    } 

    foreach ($this->input->post('passes') as $passes) { 
    $dataSet2[$i++] = array (
      'passes' => $passses 
    ); 
    } 
//Not sure how to pass multiple arrays, or if even possible 
$this->sport_model->insert_stat($dataSet1, $dataSet2); 
} 

型号:

//Passing multiple params error out due to "String to Array Conversion" 
function insert_stat($dataSet1, $dataSet2) { 
    $this->db->insert_batch('table', $dataSet1, $dataSet2); 
    return $this->db->insert_id(); 
} 

回答

2

将您的控制器和型号设置为:

控制器:

//Loops through a table like form for inputting stats 
function add_stat() { 

    $points = $this->input->post('points'); 
    $passes = $this->input->post('passes'); 
    for($i=0;$i<sizeof($points);$i++) 
    { 
    $dataSet[$i] = array ('points' => $points[$i], 'passes' => $passses[$i]); 
    } 
    // $dataSet is an array of array 
    $this->sport_model->insert_stat($dataSet); 
} 

型号:

function insert_stat($dataSet) 
{ 
    $this->db->insert_batch('table', $dataSet); 
    return $this->db->insert_id(); // this will return the id of last item inserted. 
} 
+1

工程就像一个魅力,兄弟!非常感谢! – ekm383 2014-10-28 04:40:15

0

首先,insert_batch()只需要两个参数:表名和一个数据集。

其次,insert_id()对批量插入不会有太大帮助,但那不是什么大问题。

我假设你想要点和通行证在相同的记录,并且你通过JS附加了另一组点/通道输入。

查看:

Passes: <input type="text" name="scores[0][passes]"> 
Points: <input type="text" name="scores[0][points]"> 
Passes: <input type="text" name="scores[1][passes]"> 
Points: <input type="text" name="scores[1][points]"> 
// etc... 

在你的控制器,你就用一个通过$this->input->post('scores') $数据集阵列和循环

当$ DataSet是完整的,你会批量插入与$this->db->insert_batch('table', $dataSet)

+1

谢谢您的回复!我改变了name属性,但是,我仍然收到一个字符串错误 'var points = document.createElement('input');' 'setAttributes(points,{“name”:“scores [] [points ]“,”id“:”points“,”value“:”0“});' – ekm383 2014-10-28 02:02:45

相关问题