从数据库中插入单个数据时遇到问题
示例:我有两个数据,分别是ID为1的问题1和ID为2的问题2 :。那两个问题确实有不同的按钮。问题是,一旦我单击question1或question2按钮,它将在数据库中插入两个ID。
这是我的控制器
$data['posts'] = $this->Post_Model->get_posts();
$this->load->view('templates/header');
$this->load->view('posts/index', $data);
$this->load->view('templates/footer');
$this->load->library('form_validation');
if($this->form_validation->run()==FALSE) {
if($this->input->post("add")) {
$this->Post_Model->count_up();
redirect('posts');
}
}
我的模特
function count_up(){
for($i=0; $i<count($this->input->post('hidden')); $i++){
$data = array(
'post_id' => $this->input->post("hidden[$i]")
);
$this->db->insert("userspost", $data);
}
}
我的观点
<?php
$iq = 0;
$i = 0;
$arrtry = array();
foreach($posts->result() as $post){
?>
<br>
<div class="card card-nav-tabs">
<div class="card-header card-header-primary">
<!-- colors: "header-primary", "header-info", "header-success", "header-warning", "header-danger" -->
<div class="nav-tabs-navigation">
<input class="form-control" value="<?php echo $arrtry[$iq++] = $post->id; ?>" name="hidden1[<?php $i; ?>]" type="hidden">
<input class="btn btn-primary" type="submit" name="add" value="UP" />
</div>
</div>
</div>
<?php
$i++;
}
?>
我的问题是我想插入Question2 ID而不插入Question1 ID。希望你们能帮忙谢谢!
答案 0 :(得分:2)
发生的事情是,您的所有输入都在同一表单中并带有多个提交按钮。
我可以想象出几种解决方法:
Ajax方式。需要一些JS和另一个控制器方法。
每个按钮都有一个表单:因此,您将始终有一个$this->input->post('hidden')
。无需对其进行迭代。
仅使用一种形式,您可以将按钮设置为以下形式:
<input class="btn btn-primary" type="submit" name="add-up" value="<?= $i; ?>" />
因此,在您的控制器/模型上,您可以获得单击的索引:
/* controller/model */
$index = $this->input->post('add-up');
$hidden_value = $this->input->post("hidden")[$index]