2014-04-11 3 views
0

을 나는 패키지>http://csv.thephpleague.com/정의되지 않은 오프셋 : 1 Laravel/PHP 업로드 CSV

을 사용하고 있습니다하지만이 정의되지 않은 오프셋지고있어 다음 CSV 업로드하고이 오류를 작동 않지만 이는 분명히 발생합니다, 1 업로드 할 때 나는 클라이언트가 문제를 보거나 생각하지 않는다. 여기

public function postUpload() 
{ 
    $file = Input::file('file'); 
    $name = time() . '-' . $file->getClientOriginalName(); 
    $moved = $file->move(public_path() . '/uploads/CSV', $name); 

    DB::table('wc_program_1')->truncate(); 

    $csv = new Reader($moved); 
    $csv->setOffset(0); //because we don't want to insert the header 
    $nbInsert = $csv->each(function ($row) use (&$sth) { 
     DB::table('wc_program_1')->insert(
      array(

       'Road' => $row[0], 
       'Parish' => $row[1], 
       'WorkType' => $row[2], 
       'TrafficManagement' => $row[3], 
       'Duration' => $row[4], 
       'Start' => $row[5] 
      ) 
     ); 
     return true; 
    }); 

    return Redirect::to('admin/programmes')->with('flash_success', 'Upload completed & new data inserted.'); 
} 

그리고 테이블 구조 :

enter image description here

답변

2

오류에 더가 있어야합니다

는 여기에 문제의 방법입니까? Undefined Offset: 1 in somefile.php on line #4323 또는 w/e

어쨌든 배열에서 누락 된 색인을 참조합니다.

표시되는 배열은 $row이므로 $row[1]은 존재하지 않습니다. 또한

'Road' => (isset($row[0]) ? $row[0] : ''), 
+0

이것은 'Parish'=> $ row [1], –

+0

을 보여주는 행입니다. 내 대답을 읽었습니까? – MonkeyZeus

+0

예 그들 각각을 위해, 나는 단지 당신의 질문에 대답하려고 노력할 것입니다. –

0

내가 :

'Parish' => (isset($row[1]) ? $row[1] : ''), 

아마도 같은 그들 모두에 대해이 작업을 수행하는 것이 좋습니다 것입니다 : 당신은 그냥 빨리 다음 패치를하려면

나는이 제안 그러나이 문제와 관련하여 내 문제가 귀하와 약간 다를 수 있다고 생각합니다.

내 CSV 내에서 필자는 열 제목을 설정하지 않았고 빈 필드를 남겨 두었으므로 오프셋이 설정되어 있어도 여전히 행을 구문 분석하려고 했었습니다.

요약하면 헤더에 빈 셀을 남기지 않도록하십시오!

관련 문제