[英]Check if data exist in database using codeigniter
我有一個場景,其中有2個表,即用戶和請求,我要用戶填寫表格,在表格中,他還必須填寫其他數據以及電子郵件。 現在我希望如果用戶輸入電子郵件,則只需在用戶表中添加數據並選擇最后一個插入ID,然后繼續將數據+最后插入的ID保存在請求表中並顯示消息
您的帳戶已創建。
直到這里我已經完成了編碼,但是卡住的部分是
我希望如果用戶輸入用戶表中已經存在的電子郵件,則代碼應選擇針對該電子郵件存在的ID,並將其與表單數據一起存儲在請求表中並顯示消息
“請求已提交,但您已經有一個帳戶,請登錄以查看詳細信息”
用戶表
id name email
1 sam sam@gmail.com
2 demo_user demo@gmail.com
請求表
id email userid
1 demo@gmail 2
控制者
public function submit()
{
$this->form_validation->set_rules('email','Email','trim|required');
if($this->form_validation->run() == FALSE)
{
$erdata = array
(
'error' => validation_errors()
);
$this->session->set_flashdata($erdata);
redirect('home/index');
}
else
{
if($this->user_model->instant_submit())
{
$this->session->set_flashdata('msg','Your account is created');
}
else
{
echo "failed";
}
redirect('home/index');
}
}
模型
public function instant_submit()
{
$userdata = array(
'email' => $this->input->post('email')
);
$insert_data = $this->db->insert('users', $userdata);
$lastid = $this->db->insert_id();
$reqdata = array(
'email' => $this->input->post('email'),
'userid' => $lastid,
'status'=>'pending'
);
$insert_request = $this->db->insert('request', $reqdata);
return $insert_data;
}
視圖
<?php if($this->session->flashdata('msg')): ?>
<?php echo $this->session->flashdata('msg'); ?>
<?php endif; ?>
<?php
$reg_attributes = array('id'=>'form','role'=>"form");
echo form_open('home/submit', $reg_attributes);
?>
<?php
$data = array(
'type'=>'text',
'name'=>'email',
'placeholder'=>'Email',
'class'=>'form-control',
'id'=>'form-email'
);
echo form_input($data);
?>
<?php
$data = array(
'type'=>'submit',
'class'=>'btn-primary',
'name'=>'submit',
'content'=>'Submit!'
);
echo form_button($data);
?>
<?php echo form_close(); ?>
is_unique
如果表單元素對於參數中的表和字段名稱不是唯一的,則返回FALSE
。
句法 :
is_unique[table.field]
范例:
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
這將解決您的問題
在調用此$this->user_model->instant_submit()
之前,在您的控制器中添加一個條件,以檢查電子郵件ID是否已存在或如下所示。
控制者
public function submit()
{
$this->form_validation->set_rules('email','Email','trim|required');
if($this->form_validation->run() == FALSE)
{
$erdata = array
(
'error' => validation_errors()
);
$this->session->set_flashdata($erdata);
redirect('home/index');
}
else
{
if(!$this->user_model->check_user_exist($this->input->post('email'))) {
if($this->user_model->instant_submit())
{
$this->session->set_flashdata('msg','Your account is created');
}
else
{
echo "failed";
}
} else {
//do whatever operation you want to do if user is already exist;
$this->session->set_flashdata('msg','Request is submitted but you already have an account, please login to check furthur details ');
}
redirect('home/index');
}
}
現在在您的模型中創建一個可以檢查用戶數據的函數
public function check_user_exist($email_id) {
$this->db->select('id');
$this->db->where('email',$email_id);
$query = $this->db->get('users');
$data = $query->row();
if($query->num_rows() == 1) {
return $data->id;
} else {
return false;
}
}
注意:請記住,如果找不到用戶,它將發送false,因此它將創建該用戶的新條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.