2016-04-25 10 views
0

を検証し、私は私のプロジェクトでこのコードを持っている:PHPのCodeIgniterの、NULL値に

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](date)と同じです。

'$ data [' lastodometer ']'がnullで、 '$ data [' lastdate ']'がnullの場合(私のDBにはまだ前のレコードはありません)エラーはUndefined index: odometerreadingMessage: Undefined index: dateです。私は私のlastodometerを0に設定し、datebaseにレコードがない場合はdatetodayにlastdateできますか?

答えて

1

empty()を使用して変数が空であることを確認します(空またはissetを使用する場合、変数が存在しない場合に警告は表示されません)。これが本当であれば、例えば、0

にそれらを設定します。

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

()変数の存在をテストしませんので、これはまだ未定義のインデックスの警告が生成されます。 –

+0

[PHP Manual](http://php.net/manual/en/function.empty.php)から引用:「変数が存在しない場合、警告は生成されません。つまり、empty()は本質的に簡潔なものですto!isset($ var)|| $ var == false。 "@MarcBあなたのコメントは間違っています。 – manniL

+1

ああ。謝罪...私はdownvoteを削除することができますので、あなたの答えを編集してください。しかし、empty()は依然として信頼できないことに注意してください。テストされている値が自然に「偽」である場合は、偽陽性となります。文字列の長さがゼロ以外の場合でも、 'empty( '0')'はTRUEです。 –

関連する問題