如何将从jquery创建的额外动态行传递给数组codeigniter中的控制器

时间:2017-12-01 06:52:32

标签: php jquery codeigniter

这是我的代码,用户可以通过点击添加更多链接来添加动态行。

但是当我打印

print_r($this->input->post('name1'));

在控制器中,它只打印第一个值,但我想要所有数组值。

<form action="test.php" method="post">
    <table rules="all" style="background:#fff;">
        <tr>
            <td style="font-size:14px;" >Name</td>
            <td style="font-size:14px;">Email</td>
            <td style="font-size:14px;">Mobile</td>
            <td><span style="font:normal 12px agency, arial; color:blue; text-decoration:underline; cursor:pointer;" onclick="addMoreRows(this.form);">Add More</span>
            </td>
        </tr>
        <tr id="rowId">
            <td><input name="name1[]" type="text"  value="" size="17%"/></td>
            <td><input name="age1[]" type="text"  value="" /></td>
            <td><input name="relation1[]" type="text"  value="" /></td>
        </tr>
    </table>
    <div id="addedRows"></div>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    <script type="text/javascript">
        var rowCount = 1;
        function addMoreRows(frm) {
            rowCount ++;
            var recRow = '<p id="rowCount'+rowCount+'"><tr><td><input name="name1[]" type="text" size="17%"  maxlength="120" /></td><td><input name="age1[]" type="text"  maxlength="120" style="margin: 4px 5px 0 5px;"/></td><td><input name="relation1[]" type="text" maxlength="120" style="margin: 4px 10px 0 0px;"/></td></tr> <a href="javascript:void(0);" onclick="removeRow('+rowCount+');">Delete</a></p>';
            jQuery('#addedRows').append(recRow);
        }

        function removeRow(removeNum) {
            jQuery('#rowCount'+removeNum).remove();
        }
    </script>
</form>

3 个答案:

答案 0 :(得分:1)

尝试将其保存到另一个变量并按如下方式打印:

$name1 = $this->input->post('name1');
print_r($name1);

答案 1 :(得分:0)

更改您的观看页面:

<?php echo form_open_multipart('test/add_member'); ?>代替

<form action="test.php" method="post">

在控制器中:动态输入数组数据可以按如下方式处理,这可能会帮助你......谢谢!

public function add_member()
{
 if (!$this->ion_auth->logged_in()) {
  redirect('auth/login');
 }
 $itemCount = count($this->input->post('name'));
 $itemValues=0;
 $query = "INSERT INTO You_table_name(name, age,    relation) VALUES ";
 $queryValue = "";
 for($i=0;$i<$itemCount;$i++) {
  $name = $this->input->post('name');
  $age = $this->input->post('age');
  $relation = $this->input->post('relation');
  if(!empty($name[$i])) {
   $itemValues++;
   if($queryValue!="") {
    $queryValue .= ",";
   }
   $queryValue .= "('" . $name[$i] . "', '" . $age[$i] . "', '" . $relation[$i] . "')";
  }
 }
 $sql = $query.$queryValue; 
 if($itemValues!=0) {
  if (!$this->db->query($sql)) {
//      echo "FALSE";
  }else {
//       echo "TRUE";
  }
 }
}

答案 2 :(得分:0)

您可以遍历所有POST项目,因此您可以打印出所有POST值。另外,我建议增加名字&#39;也是atttribute,所以你将拥有name1,name2,name 3等,或者只是删除这个数字,因为你使用的是数组。

如果你想增加名字&#39;属性 循环:

    $counter = 0;
    foreach ($this->input->post('name1') as $key => $value)
    {
        $counter++;
        // $value = name1
        echo $this->input->post('age". $counter ."');
        echo $this->input->post('relation". $counter ."');
    }   

使用数组 循环:

    foreach ($this->input->post('name1') as $key => $value)
    {
        echo $value;
        $this->input->post('age1');
        $this->input->post('relation1');
    }   

我自己没有测试过它