forms - 如何在数据库中发布多个输入
问题描述
我正在与 Codeigniter 合作,为销售人员制定销售目标表格。他们必须为每个产品、地区、年份等输入值。产品和地区已经通过现有数据库获得:无需设置规则(参见控制器)。
当我检查帖子(使用 Codeigniter 的 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€" 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; ?>
希望你能帮助我。
解决方案
我找到了我的答案。在我的控制器中,我必须在变量中传递每个帖子并创建一个循环。
//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
推荐阅读
- angularjs - 如何根据搜索条件隐藏/显示 ui 网格行
- c# - 如何在 Elasticsearch .net 客户端 7.4 中更新文档?
- python - Numpy:从另一个矩阵创建块矩阵的函数,每个块应该包含来自另一个矩阵的相同索引的值
- git - R Studio 和 Git 不会同步
- ruby - 使用 rails 获取桌面中文件的路径
- javascript - 如何在 blob/buffer 的 MIME 类型之间进行转换?
- c# - 难以理解沿局部和全球空间统一的运动
- c++ - 有没有什么东西限制了未来的 C++ 标准引入多个返回值?
- openssl - 使用 OpenSSL CLI 从 x509 证书获取链或 CA 颁发者
- bash - 使用包含单引号的 grep 命令创建别名