我使用$this->db->insert()
将数据插入到表中。当数据插入成功时,消息必须显示,数据也不应再次插入。刷新时,重复的数据插入到codeigniter中的数据库中
控制器:
public function index($message = '') {
$this->load->template('homePage');
}
/**
* Insert functionlaity
*/
public function insert() {
if ($_POST['save']) {
$result = $this->home->insertEntry();
$data['message'] = ($result > 0) ? 'saved' : 'Not';
redirect('HomeController',$data);
}
$this->load->view('homePage');
}
型号:
public function insertEntry()
{
$this->name = $_POST['name'];
$this->email = $_POST['email'];
$this->db->insert('users', $this);
return $this->db->affected_rows();
}
查看:
<div class="container sampleForm"><?php
echo isset ($message) ? $message : '';
echo form_open(get_class(get_instance()) . '/insert')
. form_label('id') . form_input('id', isset($query['id']) ? $query['id'] : '', 'class="form-control"') . br()
. form_label('name') . form_input('name', isset($query['name']) ? $query['name'] : '', 'class="form-control"') . br()
. form_label('email') . form_custom_input('email','email', isset($query['email']) ? $query['email'] : '', 'class="form-control"') . br()
. form_submit('save', 'save', 'class="btn btn-primary"')
. form_close();
?> </div>
我的问题是,如果我能显示身份,则数据插入每一个刷新否则状态不会显示。
这一切都应该在我的HomeController.php作为控制器,Home.php作为模型和homePage.php作为视图文件。不在任何其他文件中。
我的逻辑是:
例如:我有一个学生的表中我将要以学生的名称和标记存储像name, m1, m2, m3
。现在我想添加标记,如果它添加我想显示状态。刷新页面时不应该发生重复插入。学生的名字和标记是相似的。我想单独使用php。
我不能明白你的问题,是否当你重定向实际发生的事情时,表单会再次提交并插入? – Neal
对于我来说,数据必须插入一次,状态必须在插入后显示。 – Jagadeesh
好的,为什么不尝试通过Ajax提交表单,这是我通常在表单中执行的操作,这样您就可以轻松地验证它们,然后基于你的函数在控制器的响应,你会决定是否显示一个成功的消息或不使用jQuery和JavaScript – Neal