带条件的 Codeigniter 输入到数据库
Codeigniter input to database with condition
我是 codeigniter 的新手,当我想使用输入添加一些数据时遇到问题。在我的例子中,在第一页上,它将从用户数据库中获取默认显示交付信息的数据,可以编辑此输入,如果我单击提交,它将保存在交付数据库中。第一个问题,当我点击提交数据时,它无法保存到数据库。如何解决这个问题?第二种情况,我想给出一些条件,如果复选框勾选,输入的数据将默认保存到用户数据库,并将保存到交付数据库。
这个我的模型(M_checkout) :
public function get_user_by_id($customer_id)
{
$data = $this->db->select('*')
->from('user')
->where('user_id', $customer_id)
->get()
->row();
return $data;
}
public function add_delivery()
{
$data = array();
$customer_id = $this->input->post('user_id');
$this->db->where('user_id', $customer_id);
$data['user_id'] = $customer_id;
$data['user_nama'] = $this->input->post('user_nama');
$data['user_email'] = $this->input->post('user_email');
$data['user_phone'] = $this->input->post('user_phone');
$data['user_wa'] = $this->input->post('user_wa');
$data['user_alamat'] = $this->input->post('user_alamat');
$data['user_kota'] = $this->input->post('user_kota');
$data['user_provinsi'] = $this->input->post('user_provinsi');
$data['user_zip'] = $this->input->post('user_zip');
$this->db->insert('delivery', $data);
$customer_deliv_id = $this->db->insert_id();
$sdata = array();
$sdata['delivery_id'] = $customer_deliv_id;
$this->session->set_userdata($sdata);
}
这个我的控制器(结帐):
public function add_delivery_to_db()
{
$this->form_validation->set_rules('user_nama', 'Nama', 'trim|required');
$this->form_validation->set_rules('user_email', 'Email', 'trim|required');
$this->form_validation->set_rules('user_phone', 'Nomer Telpon', 'trim|required|min_length[10]|max_length[12]');
$this->form_validation->set_rules('user_wa', 'Nomer WA', 'trim|required|min_length[10]|max_length[12]');
$this->form_validation->set_rules('user_alamat', 'Nomer Alamat', 'trim|required');
$this->form_validation->set_rules('user_kota', 'Nomer Kota', 'trim|required');
$this->form_validation->set_rules('user_provinsi', 'Nomer Provinsi', 'trim|required');
$this->form_validation->set_rules('user_zip', 'Nomer Zip', 'trim|required|min_length[5]|max_length[5]');
if ($this->form_validation->run()) {
$delivery_post_id = $this->M_checkout->add_delivery();
redirect('payment', 'refresh');
} else {
redirect('delivery', 'refresh');
}
}
这是我的看法(交付):
<div class="columns">
<p>
</p>
<div class="column is-3"></div>
<div class="column is-6 has-addons-fullwidth">
<form class="" action="<?= base_url() ?>add_deliv" method="POST">
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Nama" name="user_nama" value="<?= $user_info->user_nama ?>" disabled>
</section>
<section class="mt-2">
<input class="input is-medium" type="email" placeholder="Email" name="user_email" value="<?= $user_info->user_email ?>" disabled>
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="No. Telepon" name="user_phone" value="<?= $user_info->user_phone ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Whatapp" name="user_wa" value="<?= $user_info->user_wa ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Alamat" name="user_alamat" value="<?= $user_info->user_alamat ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Kota" name="user_kota" value="<?= $user_info->user_kota ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Provinsi" name="user_provinsi" value="<?= $user_info->user_provinsi ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Kode Pos" name="user_zip" value="<?= $user_info->user_zip ?>">
</section>
<section class="columns mt-4">
<div class="column">
<p class="has-text-white has-text-weight-semibold">
Simpan sebagai default
</p>
</div>
<div class="column">
<input class="checkbox is-white" type="checkbox" name="delivery_checkbox" value="on">
</div>
</section>
<section class="columns">
<div class="column"></div>
<div class="column">
<button class="button is-danger is-medium">
Simpan & Lanjut
</button>
</div>
<div class="column"></div>
</section>
</form>
</div>
<div class="column is-3"></div>
</div>
这是我的投递数据库:delivery
这是我的用户数据库:user
这张送货图delivery.php
抱歉我的英语不好。请帮我。我感谢每一个答案。
INSERT
语句不应包含 WHERE
子句。 where
子句永远不会满足,因此永远不会进行插入。
where
子句在更新或替换记录时有意义(因为它会缩小您实际最终更新的 现有 记录的范围)
从您的 add_delivery
方法中删除 $this->db->where('user_id', $customer_id);
语句,插入将起作用。
关于仅在勾选复选框时才插入,有很多选择。
最简单的是:
if ($this->form_validation->run()) {
if ($this->input->post('delivery_checkbox') === 'on')
{
// only do the insert if the checkbox is actually ticked
$delivery_post_id = $this->M_checkout->add_delivery();
}
redirect('payment', 'refresh');
}
我是 codeigniter 的新手,当我想使用输入添加一些数据时遇到问题。在我的例子中,在第一页上,它将从用户数据库中获取默认显示交付信息的数据,可以编辑此输入,如果我单击提交,它将保存在交付数据库中。第一个问题,当我点击提交数据时,它无法保存到数据库。如何解决这个问题?第二种情况,我想给出一些条件,如果复选框勾选,输入的数据将默认保存到用户数据库,并将保存到交付数据库。
这个我的模型(M_checkout) :
public function get_user_by_id($customer_id)
{
$data = $this->db->select('*')
->from('user')
->where('user_id', $customer_id)
->get()
->row();
return $data;
}
public function add_delivery()
{
$data = array();
$customer_id = $this->input->post('user_id');
$this->db->where('user_id', $customer_id);
$data['user_id'] = $customer_id;
$data['user_nama'] = $this->input->post('user_nama');
$data['user_email'] = $this->input->post('user_email');
$data['user_phone'] = $this->input->post('user_phone');
$data['user_wa'] = $this->input->post('user_wa');
$data['user_alamat'] = $this->input->post('user_alamat');
$data['user_kota'] = $this->input->post('user_kota');
$data['user_provinsi'] = $this->input->post('user_provinsi');
$data['user_zip'] = $this->input->post('user_zip');
$this->db->insert('delivery', $data);
$customer_deliv_id = $this->db->insert_id();
$sdata = array();
$sdata['delivery_id'] = $customer_deliv_id;
$this->session->set_userdata($sdata);
}
这个我的控制器(结帐):
public function add_delivery_to_db()
{
$this->form_validation->set_rules('user_nama', 'Nama', 'trim|required');
$this->form_validation->set_rules('user_email', 'Email', 'trim|required');
$this->form_validation->set_rules('user_phone', 'Nomer Telpon', 'trim|required|min_length[10]|max_length[12]');
$this->form_validation->set_rules('user_wa', 'Nomer WA', 'trim|required|min_length[10]|max_length[12]');
$this->form_validation->set_rules('user_alamat', 'Nomer Alamat', 'trim|required');
$this->form_validation->set_rules('user_kota', 'Nomer Kota', 'trim|required');
$this->form_validation->set_rules('user_provinsi', 'Nomer Provinsi', 'trim|required');
$this->form_validation->set_rules('user_zip', 'Nomer Zip', 'trim|required|min_length[5]|max_length[5]');
if ($this->form_validation->run()) {
$delivery_post_id = $this->M_checkout->add_delivery();
redirect('payment', 'refresh');
} else {
redirect('delivery', 'refresh');
}
}
这是我的看法(交付):
<div class="columns">
<p>
</p>
<div class="column is-3"></div>
<div class="column is-6 has-addons-fullwidth">
<form class="" action="<?= base_url() ?>add_deliv" method="POST">
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Nama" name="user_nama" value="<?= $user_info->user_nama ?>" disabled>
</section>
<section class="mt-2">
<input class="input is-medium" type="email" placeholder="Email" name="user_email" value="<?= $user_info->user_email ?>" disabled>
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="No. Telepon" name="user_phone" value="<?= $user_info->user_phone ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Whatapp" name="user_wa" value="<?= $user_info->user_wa ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Alamat" name="user_alamat" value="<?= $user_info->user_alamat ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Kota" name="user_kota" value="<?= $user_info->user_kota ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Provinsi" name="user_provinsi" value="<?= $user_info->user_provinsi ?>">
</section>
<section class="mt-2">
<input class="input is-medium" type="text" placeholder="Kode Pos" name="user_zip" value="<?= $user_info->user_zip ?>">
</section>
<section class="columns mt-4">
<div class="column">
<p class="has-text-white has-text-weight-semibold">
Simpan sebagai default
</p>
</div>
<div class="column">
<input class="checkbox is-white" type="checkbox" name="delivery_checkbox" value="on">
</div>
</section>
<section class="columns">
<div class="column"></div>
<div class="column">
<button class="button is-danger is-medium">
Simpan & Lanjut
</button>
</div>
<div class="column"></div>
</section>
</form>
</div>
<div class="column is-3"></div>
</div>
这是我的投递数据库:delivery 这是我的用户数据库:user
这张送货图delivery.php
抱歉我的英语不好。请帮我。我感谢每一个答案。
INSERT
语句不应包含 WHERE
子句。 where
子句永远不会满足,因此永远不会进行插入。
where
子句在更新或替换记录时有意义(因为它会缩小您实际最终更新的 现有 记录的范围)
从您的 add_delivery
方法中删除 $this->db->where('user_id', $customer_id);
语句,插入将起作用。
关于仅在勾选复选框时才插入,有很多选择。 最简单的是:
if ($this->form_validation->run()) {
if ($this->input->post('delivery_checkbox') === 'on')
{
// only do the insert if the checkbox is actually ticked
$delivery_post_id = $this->M_checkout->add_delivery();
}
redirect('payment', 'refresh');
}