CSV File Upload
Using the below code i created the form "importcsvform.php".
importcsvform
<div class="form">
<?php
$form=$this->beginWidget('CActiveForm', array(
'id'=>'csv-form',
'enableAjaxValidation'=>false,
'htmlOptions'=>array('enctype' => 'multipart/form-data'),
));
?>
<?php
//echo $form->errorSummary($model);
?>
<div class="row">
<?php echo $form->labelEx($model,'csvfile'); ?>
<?php
$this->widget('CMultiFileUpload', array(
'model'=>$model,
'name' => 'csvfile',
'max'=>1,
'accept' => 'csv',
'duplicate' => 'Duplicate file!',
'denied' => 'Invalid file type',
));
?>
<?php echo $form->error($model,'csvfile'); ?>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Import',array("id"=>"Import",'name'=>'Import')); ?>
</div>
<?php $this->endWidget(); ?>
</div><!-- form -->
Read CSV In Controller
CSV file contains the data in follwoing format
Name | Age |
---|---|
Yii | 20 |
Framework | 25 |
public function actionImport(){
$model=new Csv;
if(isset($_POST['csv']))
{
$model->attributes=$_POST['csv'];
$filelist=CUploadedFile::getInstancesByName('csvfile');
// To validate
if($filelist)
$model->csvfile=1;
if($model->validate())
{
foreach($filelist as $file)
{
try{
$transaction = Yii::app()->db->beginTransaction();
$handle = fopen("$file->tempName", "r");
$row = 1;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($row>1){
$newmodel=new Csv;
$newmodel->name=$data[0];
$newmodel->age=$data[1];
$newmodel->save();
}
$row++;
}
$transaction->commit();
}catch(Exception $error){
print_r($error);
$transaction->rollback();
}
}
}
}
$this->render('importcsvform',array(
'model'=>$model,
));
}
-
binhpv
-
m bala
-
binhpv
-
m bala
-
binhpv
-
-
-
-