无法在codeigniter中插入数据库

时间:2014-12-22 02:56:23

标签: php mysql codeigniter if-statement

我想检查插入unit_id时我们必须检查unit_id alraedy用于其他车队。当已经使用过show message error而没用过另一个fleet unit_id可以插入数据库。

这是控制器中的代码

    function add_fleet_member()
    {
        $this->data['unit_list']= $this->munit_list->get_all_unit_list2();
        $this->data['fleet'] = $this->mfleet->get_fleet();

        $this->form_validation->set_rules('id_fleet', 'ID Fleet', 'required');
        $this->form_validation->set_rules('unit_id', 'Unit', 'required|callback_unit_check');

        if ($this->form_validation->run() == FALSE) 
        {
            $this->data['contents'] = $this->load->view('fleet_member',$this->data, true);
            $this->load->view('template/wrapper',$this->data);
        }
        else
        {

            $fleet = $this->input->post('id_fleet');
            $unit_id = $this->input->post('unit_id');

            $records = array();

            for ($i=0; $i < count($unit_id) ; $i++) { 
                $records[] = array(
                    'id_fleet' => $fleet,
                    'unit_id' => $unit_id[$i]
                    );
            }

            $query = $this->database_three->query("select
                count(id_fleet_member) as jumlah from fleet_member 
                where id_fleet = '$fleet' AND unit_id = '$unit_id'
                group by fleet_member.id_fleet");
            $ans = $query->row();

            $check = $this->database_three->query("
                select fleet.fleet_status as status, fleet_member.unit_id as unit
                from fleet, fleet_member 
                where fleet_member.unit_id = '$unit_id' AND fleet.id_fleet = '$fleet'");
            $ans2 = $query->row();


            if ($ans->jumlah > 0)
            {
                $this->session->set_flashdata('message', generateErrorMessage('Data Fleet ID Sudah Digunakan'));
                redirect(site_url('fleet_member'));     
            }
            else
            {
                if ($ans2->unit == $unit_id && $ans2->status == $fleet) {

                    $this->session->set_flashdata('message', generateErrorMessage('Data Unit ID Sudah Digunakan'));
                    redirect(site_url('fleet_member')); 
                }
                else
                {

                    foreach ($records as $data) 
                    {
                         $query = "insert into fleet_member (id_fleet, unit_id) values ('".$data['id_fleet']."','".$data['unit_id']."')"; 
                         $this->database_three->query($query);

                    }

                    $this->session->set_flashdata('message', generateSuccessMessage('Data berhasil ditambah'));
                    redirect(site_url('fleet_member'));
                }

            }

        }

我收到此代码的错误。

当我在另一个车队中插入具有相同unit_id的unit_id数据时,无法插入数据库并显示按摩数据单元ID Sudah Digunakan&#39;。 (右)

当我在anohter车队中插入unit_id与另一个unit_id时,数据无法插入数据库并显示按摩&#39;数据单元ID Sudah Digunakan&#39;。 (它的错误)因为它必须插入数据库。

你可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以定义自己的回调函数并验证您的数据是否唯一。检查codeigniter的用户指南表单验证部分。另一个问题 - 你还没有使用任何型号,对吧?这不是好习惯。首先,从控制器清理数据,然后使用模型访问数据和操作数据。