2016-04-25 5 views
0

У меня есть этот код в моем проекте:Php Codeigniter, проверка нулевого значения

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

        } 
     } 

    } 

Я передаю эти переменные на мой взгляд:

$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'];} 

Переменные данные [ «одометр»] Получает последней записи (одометра) в моей базе данных SQL так же, как данные ['date'] (дата).

Таким образом, проблема заключается в том, что '$ data [' lastodometer ']' null и '$ data [' lastdate ']' null (в моей базе данных еще нет записи) Я принимаю ошибку Undefined index: odometerreading и Message: Undefined index: date , Как я могу установить мой последний приемник на 0 и lastdate на datetoday, если у меня нет записи на моей дате?

ответ

1

Проверьте, нет ли варов пустым, используя empty() (при использовании пустого или isset предупреждения не будут выдаваться, если переменная не существует). Если это так, установите их на 0.

Например:

if (empty($data['lastodomoter']){ 
    $data['Lastodometer'] = 0; 
} 
+0

пустых() не проверяет переменное существование, так что это будет все еще производит неопределенные предупреждения индекса. –

+0

Цитата из [Руководство по PHP] (http://php.net/manual/en/function.empty.php): «Предупреждение не генерируется, если переменная не существует. Это означает, что empty() по сути является кратким эквивалентом to! isset ($ var) || $ var == false. "@MarcB Поэтому ваш комментарий неверен. – manniL

+1

Ах да. извиняйтесь ... отредактируйте свой ответ, чтобы я мог удалить downvote. Но учтите, что empty() по-прежнему недостоверен. если тестируемое значение, естественно, «ложно», вы получите ложное срабатывание, например. 'empty ('0')' TRUE, хотя строка имеет ненулевую длину. –

Смежные вопросы