首页 > 解决方案 > 如何在数据库中发布多个输入

问题描述

我正在与 Codeigniter 合作,为销售人员制定销售目标表格。他们必须为每个产品、地区、年份等输入值。产品和地区已经通过现有数据库获得:无需设置规则(参见控制器)。

当我检查帖子(使用 Codeigniter 的 enable_profiler )时,我得到了这个: enable_profiler 结果

问题是这些数据没有插入到数据库表中。我阅读和测试了很多,但总是被阻止。

这是我的模型:

    public function add($params)
        {
            $this->db->insert($this->table, $params);
            return $this->db->insert_id();
        }

我的控制器:

    $this->load->library('form_validation');
    
            $this->form_validation->set_rules('year', 'Year', 'required|integer');
            $this->form_validation->set_rules('prevision', 'Prevision', 'required');
            $this->form_validation->set_rules('value', 'Value', 'required|integer');
            
            if ($this->form_validation->run()) {
                $params = array(
                    'year' => $this->input->post('year'),
                    'prevision' => $this->input->post('prevision'),
                    'locality_id' => $this->input->post('locality'),
                    'product' => $this->input->post('product'),
                    'value' => $this->input->post('value'),
                );
    
                $this->Objectif_model->add($params);
                redirect('admin/objectif');
            } else {
                $this->layout('admin/objectif/add');
            }

我对输入的看法:

<?php foreach ($products as $product) : ?>
<tr class="form-group">
    <td class="bg-warning">
    <?= $product->grp_product; ?>
    </td>
    <td class="bg-warning product">
    <?= $product->code; ?>
    </td>
        <?php foreach ($localities as $locality ) : ?>
        <td>
            <input type="text" class="form-control valeur" placeholder="Value k€&quot; name="value[]" data-validation="number" data-validation-ignore="./" data-validation-optional="true" />
            <input type="text" name="year[]" />
            <input type="text" name="prevision[]" />
            <input type="text" name="product[]" value="<?= $product->code ?>" />
            <input type="text" name="localite_id[]" value="<?= $locality->id ?>" />
        </td>
        <?php endforeach; ?>
</tr>
<?php endforeach; ?>

希望你能帮助我。

标签: formsloopscodeigniterinput

解决方案


我找到了我的答案。在我的控制器中,我必须在变量中传递每个帖子并创建一个循环。

    //action post in a var for each data
    $id = $this->input->post('id');
    $prev = $this->input->post('prevision');
    $year= $this->input->post('year');
    $locality_id = $this->input->post('locality_id');
    $product = $this->input->post('product');
    $value= $this->input->post('value');

    if ($this->form_validation->run()) {
        $count_id = count($id);

        if (isset($id)) {
            for ($i = 0; $i < $count_id; $i++) {
                $obj[$i] = array(
                    'id' => $id[$i],
                    'prevision' => $prev,
                    'year' => $year,
                    'locality_id' => $locality_id[$i],
                    'product' => $product[$i],
                    'value' => $value[$i]*1000
                );
            } // endfor

            if (isset($obj)) {
                $this->Objectif_model->add_obj($obj);
            } // endif
         }// endif isset
    }// endif form validation

推荐阅读