带条件的代码点火器输入数据库

问题描述

我是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子句很有意义(因为它会缩小实际上最终更新的现有记录的范围)

从您的$this->db->where('user_id',$customer_id);方法中删除add_delivery语句,插入将起作用。

仅在复选框打钩时才插入,有很多选择。 最简单的是:

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');
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...