Como gravo um CSV na base de dados?

Boas,

Como primeiro tópico não podia deixar de ser uma dúvida. Agradeço toda a ajuda desde já.

Eu comecei à algumas horas a experimentar o Yii e acho-o bastante bom.

O problema é que tenho 2 CSV para testes, ambos com 5 linhas, e o que acontece é que só consigo gravar a última linha do CSV, não estou a perceber porque é que as outras são ignoradas.

Este é o meu código no controller




public function actionImport() {

    $model = new Produtos;

    $this->render('import', array('model' => $model) );

    

    if( isset($_FILES['csv_file']) ) {


      $handle = fopen($_FILES['csv_file']['tmp_name'], 'r');


      if ($handle) {

        while( ($line = fgetcsv($handle, 1000, ";")) != FALSE) {   

          print_r($line);       

            $model->codigo          = $line[0];

            $model->nome            = $line[1];

            $model->descricao       = $line[2];

            $model->stock           = $line[3];

            $model->data_reposicao  = $line[4];


            $model->save();

        }        

      }

      fclose($handle);

    }

    

  }



Também aproveito para perguntar se há forma de guardar a data independetemente do formato em que ela esteja no CSV, pois o ultimo campo vem com a data assim: 0000-00-00 (e no csv tenho neste formato : 20-03-2011)

Agradeço desde já toda a ajuda.

Ahi brodi blz,

Isto acontece porque vc so esta estanciando o model uma vez, e sobre a data vc precisa tratar antes de salvar, entao tenta isso:




public function actionImport() {

    $model = new Produtos;

    

   if(isset($_FILES['csv_file'])) {


      $handle = fopen($_FILES['csv_file']['tmp_name'], 'r');


      if ($handle) {

        while( ($line = fgetcsv($handle, 1000, ";")) != FALSE) { 

            

            print_r($line);   

            $model = new Produtos;    

            $model->codigo          = $line[0];

            $model->nome            = $line[1];

            $model->descricao       = $line[2];

            $model->stock           = $line[3];

            $model->data_reposicao  = Yii::app()->dateFormatter->format("yyyy-MM-dd",$line[4]);


            $model->save();

        }        

      }

      fclose($handle);

    }


    $this->render('import', array('model' => $model));

    

  }



Falow

Muito Obrigado Edson