doulu8847 2016-04-25 16:54
浏览 42
已采纳

Php Codeigniter,验证空值[重复]

I have this code in my project:

public function new_inspection_report() {

                $NOWdate = new Datetime('now');
        $this->check_session();
        $this->restrict_ordinary();

    $truckno = $this->uri->segment(2);

    $data['title'] = "New Inspection Report";

    $data['result'] = $this->truck->find_truckbyid($truckno);
    $data['regno'] = $data['result']['registrationno'];
    $data['odometer'] = $this->truck->validate_odemeter($truckno,$this->input->post('odometerreading'),"mypms_inspection_report");
    $data['lastodometer'] = $data['odometer']['odometerreading'];
    $data['date'] = $this->truck->validate_date($truckno,$this->input->post('datestarted'),"mypms_inspection_report","date");
    $data['lastdate'] = $data['date']['date'];


        $this->load->library('form_validation');
        $this->form_validation->set_error_delimiters("<div class='row'><div class='col-lg-12'><div class='alert alert-danger alert-dismissable'><button type='button' class='close' data-dismiss='alert' aria-hidden='true'>&times;</button><i class='fa fa-info-circle'></i>&nbsp;", "</div></div></div>");

        $data['validateodometer'] = $this->truck->validate_odemeter($truckno,$this->input->post('odometerreading'),"mypms_inspection_report");
        $data['validatedate'] = $this->truck->validate_date($truckno,$this->input->post('datestarted'),"mypms_inspection_report","date");

        if($this->form_validation->run('new_inspectionreport') === FALSE) {

    $this->load->view('header',$data);
    $this->load->view('new_inspection_report',$data);
    $this->load->view('footer',$data);  

        }else{

            if($this->input->post('odometerreading') < $data['validateodometer']['odometerreading']) {
                            $this->session->set_flashdata('success_insert', "4");
                            redirect(base_url("new-inspection-report/".$truckno));  



                    }else{


                        if($this->input->post('datestarted') < $data['validatedate']['date']) {

                            $this->session->set_flashdata('success_insert', "5");
                            redirect(base_url("new-inspection-report/".$truckno));  

                        }elseif ($this->input->post('datestarted') > $NOWdate)
                        {


                            $this->input->post('datestarted') > $NOWdate;

                            $this->session->set_flashdata('success_insert', "6");
                            redirect(base_url("new-inspection-report/".$truckno));

                        }
                        else
                        {
                        $this->truck->insert_inspectionreport($truckno);
                        $last_id = $this->db->insert_id();
                        $count = $this->truck->count_inspection_bytruck($truckno);

                        $this->authentication->watch_dog("Successfully add inspection report with ID ".$last_id,$this->session->userdata('id'));
                        $this->truck->insert_inspectionno($count,$last_id);


                        $this->session->set_flashdata('success_insert', "1");
                        redirect(base_url('new-inspection-report/'.$truckno));
                        }

                    }
        }

    }

I am passing these variables to my view:

    $data['odometer'] = $this->truck->validate_odemeter($truckno,$this->input->post('odometerreading'),"mypms_inspection_report");
    $data['lastodometer'] = $data['odometer']['odometerreading'];
    $data['date'] = $this->truck->validate_date($truckno,$this->input->post('datestarted'),"mypms_inspection_report","date");
    $data['lastdate'] = $data['date']['date'];}

The variables data['odometer'] gets the latest record (odometer) on my SQL Database same as data['date'] (date).

So the problem is if '$data['lastodometer']' is null and '$data['lastdate']' is null (No previous record yet in my DB) I am receiving an error of Undefined index: odometerreading and Message: Undefined index: date. How I can set the my lastodometer to 0 and lastdate to datetoday if I have no record on my datebase yet?

</div>
  • 写回答

1条回答 默认 最新

  • drpmazn9021 2016-04-25 16:58
    关注

    Check if the vars are empty by using empty() (When using empty or isset, no warning will be thrown in case the variable does not exist) . If this is true, set them to 0.

    For example:

    if (empty($data['lastodomoter']){
        $data['Lastodometer'] = 0;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R