2016-05-23 8 views
0

Ich muss auf eine Tabelle zugreifen, indem ich auf eine andere Tabellen-ID referenziere. Auf diese Weise habe ich zuerst eine foreach-Schleife erstellt, um die ersten Tabellendaten zurückzugeben und dann ihre ID-Referenz an die zweite Tabelle. Ich habe es in meiner anderen Funktion gemacht, aber ich weiß nicht, in dieser Funktion wird mir angezeigt, dass es ein undefinierter Index ist. Hier ist mein Modell:Codeigniter mit undefiniertem Index

function retrieve_Sched($id) 
{ 
    $this->db->select('*'); 
    $this->db->from('schedule'); 
    $this->db->where('EmpID',$id); 
    $query = $this->db->get(); 

    if($query->num_rows() == 0) 
    { 
     return false; 
    } 
    else 
    { 
     return $query->result_array(); 
    } 
} 

und hier wird die Reglerfunktion:

foreach($data['result'] as $val) 
     { 
      $data['schedule'] = $this->DBmodel->retrieve_Sched($val['EmpID']); 

      if($data['schedule'] == false) 
      { 
       $consTimeIn = '05:30'; 
       $consLunchOut = '10:50'; 
       $consLunchIn = '13:00'; 
       $consTimeOut = '17:00'; 
      } 
      else 
      { 
       $consTimeIn = $data['schedule']['TimeFrom']; 
       $consLunchOut = $data['schedule']['LunchOut']; 
       $consLunchIn = $data['schedule']['LunchIn']; 
       $consTimeOut = $data['schedule']['TimeTo']; 
      } 

dies ist der Fehler, die ich bekomme:

ERROR - 2016-05-23 09:57:02 --> Severity: Notice --> Undefined index: TimeFrom C:\xampp\htdocs\TMS\application\controllers\tms.php 482 
ERROR - 2016-05-23 09:57:02 --> Severity: Notice --> Undefined index: LunchOut C:\xampp\htdocs\TMS\application\controllers\tms.php 483 
ERROR - 2016-05-23 09:57:02 --> Severity: Notice --> Undefined index: LunchIn C:\xampp\htdocs\TMS\application\controllers\tms.php 484 
ERROR - 2016-05-23 09:57:02 --> Severity: Notice --> Undefined index: TimeTo C:\xampp\htdocs\TMS\application\controllers\tms.php 485 
ERROR - 2016-05-23 09:58:41 --> Severity: Notice --> Undefined index: TimeFrom C:\xampp\htdocs\TMS\application\controllers\tms.php 482 
ERROR - 2016-05-23 09:58:41 --> Severity: Notice --> Undefined index: LunchOut C:\xampp\htdocs\TMS\application\controllers\tms.php 483 
ERROR - 2016-05-23 09:58:41 --> Severity: Notice --> Undefined index: LunchIn C:\xampp\htdocs\TMS\application\controllers\tms.php 484 
ERROR - 2016-05-23 09:58:41 --> Severity: Notice --> Undefined index: TimeTo C:\xampp\htdocs\TMS\application\controllers\tms.php 485 
+0

können Sie $ Daten var_dump [ 'Zeitplan'] kurz vor der Linie 482? –

+0

print_r ($ data ['schedule']); sterben; vorher if condition..es könnte ein falscher Schlüssel sein oder Sie müssen "->" benutzen, um auf spezifischen Schlüssel zuzugreifen – Kunal

+0

I var_dump und print_r und es enthält Daten. Ich habe bereits versucht, was Kunal vorgeschlagen, aber ich habe versucht, Eigentum von Nicht-Objekt Fehler zu bekommen ... – SilverRay

Antwort

0

Das löst mein Problem:

if($data['result'] == false) 
    { 
     echo 'Sorry files have already been processed'; 
    } 
    else 
    { 
     foreach($data['result'] as $val) 
     { 
      $data['check'] = $this->DBmodel->check_Sked($val['EmpID']); 

      if($data['check'] == false) 
      { 
       $consTimeIn = "05:30"; 
       $consLunchOut = "10:50"; 
       $consLunchIn = "13:00"; 
       $consTimeOut = "17:00"; 
      } 
      else 
      { 
       $data['schedule'] = $this->DBmodel->retrieve_sched($val['EmpID'],$val['ValidDate']); 

       if($data['schedule'] == false) 
       { 
        $consTimeIn = "05:30"; 
        $consLunchOut = "10:50"; 
        $consLunchIn = "13:00"; 
        $consTimeOut = "17:00"; 
       } 
       else 
       { 
        foreach($data['schedule'] as $value) 
        { 
         $conTimeIn = $value['TimeFrom']; 
         $consTimeOut = $value['TimeTo']; 

         if($value['LunchOut'] == NULL || $value['LunchOut'] == "") 
         { 
          $consLunchOut = @date('H:i',@strtotime($consTimeIn,'+4 hour')); 
         } 
         else 
         { 
          $consLunchOut = $value['LunchOut']; 
         } 

         if($value['LunchIn'] == NULL || $value['LunchIn'] == "") 
         { 
          $consLunchIn = @date('H:i',@strtotime($consTimeIn,'+6 hour')); 
         } 
         else 
         { 
          $consLunchIn = $value['LunchIn']; 
         } 
        } 
       } 
      } 
1

von Ihrem Controller, die Funktion, die Sie verwenden gibt Array zurück. $data['schedule'] = $this->DBmodel->retrieve_Sched($val['EmpID']);

versuchen ein Schuss:

foreach($data['result'] as $val) 
      { 
       $data['schedule'] = $this->DBmodel->retrieve_Sched($val['EmpID']); 

       if($data['schedule'] == false) 
       { 
        $consTimeIn = '05:30'; 
        $consLunchOut = '10:50'; 
        $consLunchIn = '13:00'; 
        $consTimeOut = '17:00'; 
       } 
       else 
       { 
        foreach($data['schedule'] as $schedule) 
         { 
          $consTimeIn = $schedule['TimeFrom']; 
          $consLunchOut = $schedule['LunchOut']; 
          $consLunchIn = $schedule['LunchIn']; 
          $consTimeOut = $schedule['TimeTo']; 
         } 
       } 
     } 

    ] 
+0

Ich habe versucht, aber kann nicht [] für Lesefehler verwenden ..... – SilverRay

+0

Ich habe Update meine Antwort – YVS1102

+0

das ist, was ich gerade mache ... – SilverRay

0

result_array() immer Array zurück, so dass Sie Reihe verwenden() oder nur $ data [ 'Zeitplan'] als Array verwenden

$data['schedule'][0]['TimeFrom']; 
0

Wenn Sie eine einzelne Datenzeile wünschen, verwenden Sie $ row_array().

function retrieve_Sched($id) 
{ 
    $this->db->select('*'); 
    $this->db->from('schedule'); 
    $this->db->where('EmpID',$id); 
    $query = $this->db->get(); 

    if($query->num_rows() == 0) 
    { 
     return false; 
    } 
    else 
    { 
     return $query->row_array(); 
    } 
} 
+0

dann wie kann ich es in meinem Controller zugreifen? – SilverRay

+0

$ this-> Modellname-> retrieve_Sched ($ id); –

+0

Ändern Sie einfach in Ihrem Modell. $ Query-> result_array(); nach $ query-> row_array(); –