ตอบ

Warning: this topic has not been posted in for at least 120 days.
Unless you're sure you want to reply, please consider starting a new topic.
ชื่อ:
อีเมล์:
หัวข้อ:
ไอค่อนข้อความ:

แนบไฟล์:
(Clear Attachment)
(แนบไฟล์เพิ่ม)
Restrictions: 4 per post, maximum total size 1024KB, maximum individual size 512KB
Verification:
Type the letters shown in the picture
Listen to the letters / Request another image

Type the letters shown in the picture:
ภาษาเบสิกที่มากับ DOS รุ่น 6.2 (คิวเบสิค):

shortcuts: กด alt+s เพื่อตั้งกระทู้ หรือ alt+p แสดงตัวอย่าง


สรุปหัวข้อ

ข้อความโดย: อั๋น ทรงวุฒิ
« เมื่อ: 07 ธันวาคม 2015, 06:51:24 PM »

สอบถามหน่อยนะครับ ว่าสมมุติผมต้องการ import ข้อมูลไฟล์ excel แล้วข้อมูลที่อยู่ในไฟล์ excel จะเข้าไปใน database เลย จากตัวอย่างนี้ผมสามารถทำได้ไหมครับ มือใหม่หัดเขียนอะครับ รบกวนชี้แนะด้วยนะครับ


https://github.com/arogachev/yii2-excel

ไม่อยากให้ใช้ excel เพราะถ้าในไฟล์มีหลาย sheet แล้วมีข้อมูลอื่นปะปน เช่น หัวข้อตาราง สรุป มันจะ error

ถ้าเป็น csv มันจะตรงจุดกว่า
ข้อความโดย: nu2499nu
« เมื่อ: 03 ธันวาคม 2015, 09:05:04 AM »

สอบถามหน่อยนะครับ ว่าสมมุติผมต้องการ import ข้อมูลไฟล์ excel แล้วข้อมูลที่อยู่ในไฟล์ excel จะเข้าไปใน database เลย จากตัวอย่างนี้ผมสามารถทำได้ไหมครับ มือใหม่หัดเขียนอะครับ รบกวนชี้แนะด้วยนะครับ
ข้อความโดย: อั๋น ทรงวุฒิ
« เมื่อ: 25 เมษายน 2015, 10:29:36 AM »

[ Model ]

backend/models/Import.php


โค๊ด: [Select]
<?php

namespace backend\models;

use 
Yii;
use 
yii\base\Model;
use 
yii\web\UploadedFile;

/**
 * ContactForm is the model behind the contact form.
 */
class Import extends Model
{
    public 
$file;

public function rules()
{
return [
[['file'], 'file'],
];
}


    
/**
     * @inheritdoc
     */
   
    
public function attributeLabels()
    {
        return [
            
'file' => 'ไฟล์นำเข้า (CSV จาก excel)',
        ];
    }

    
/**
     * Sends an email to the specified email address using the information collected by this model.
     *
     * @param  string  $email the target email address
     * @return boolean whether the email was sent
     */

}



[ Controller ]

backend/controllers/SiteController.php

เรียกใช้งานโดย index.php?r=site/import

โค๊ด: [Select]
<?php
use yii\web\UploadedFile;
use 
backend\models\Import;

// เนื้อหาบางส่วนในไฟล์

 
public function behaviors()
    {
        return [
            
'access' => [
                
'class' => AccessControl::className(),
                
'rules' => [
                    [
                        
'actions' => ['login''error'],
                        
'allow' => true,
                    ],
                    [
                        
'actions' => ['logout''index','import'],
                        
'allow' => true,
                        
'roles' => ['@'],
                    ],
                ],
            ],
            
'verbs' => [
                
'class' => VerbFilter::className(),
                
'actions' => [
                    
'logout' => ['post'],
                ],
            ],
        ];
    }

   
   public function 
actionImport()
    {
        
$model = new Import();
$filename='';
if (Yii::$app->request->isPost) {
$model->file UploadedFile::getInstance($model'file');
if ($model->validate()) {
$model->file->saveAs('import/import.'.$model->file->extension);
$filename=$_FILES['Import']['name']['file']; 
//echo phpinfo();
}
}
return $this->render('import', ['model' => $model,'filename'=>$filename]);
}



[ View ]

backend/views/site/import.php


โค๊ด: [Select]
<?php

use yii\helpers\Html;
use 
yii\widgets\ActiveForm;
use 
backend\models\Import;
/* @var $this yii\web\View */
/* @var $model app\models\Simcard */
/* @var $form yii\widgets\ActiveForm */
?>



<?php
$model=new Import();

if (!empty($filename)) 
{
?>

    <div class="jumbotron">
<h1>ได้รับไฟล์ข้อมูลแล้ว</h1>


<p class="lead">โปรดตรวจสอบเนื้อหาอีกครั้ง เพื่อเช็คความเรียบร้อย</p>

<p><a class="btn btn-lg btn-success" href="index.php">กลับสู่หน้าแรก</a></p>
<h2><?=$filename; ?></h2>
<?php if (($_FILES["Import"]["type"]["file"]=="image/jpeg")||
($_FILES["Import"]["type"]["file"]=="image/gif")||
($_FILES["Import"]["type"]["file"]=="image/png")) 
echo "<img src=upload/".$filename.">"?>


<?php  if ($_FILES["Import"]["type"]["file"]=="text/comma-separated-values"
echo "<h1>CSV</h1>";
?>

</div>


<?php
//echo phpinfo();
}
else
{
?>



<div class="upload-form">

    <?php $form ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

<?= $form->field($model, 'file')->fileInput() ?>

   
    <div class="form-group">
        <?= Html::submitButton( 'ส่งข้อมูล', ['class' =>'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

<?php
}
?>
ข้อความโดย: อั๋น ทรงวุฒิ
« เมื่อ: 22 เมษายน 2015, 07:39:07 PM »

[ Model ]

UploadCSV.php

โค๊ด: [Select]
<?php
namespace app\models;
use 
yii\base\Model;
use 
yii\web\UploadedFile;
/**
* UploadForm is the model behind the upload form.
*/
class UploadCSV extends Model
{
/**
* @var UploadedFile|Null file attribute
*/
public $file;
/**
* @return array the validation rules.
*/
public function rules()
{
return [
[[
'file'], 'file'],
];
}

    public function 
attributeLabels()
    {
        return [
            
'file' => 'ไฟล์ข้อมูล (csv)',

        ];
    }

}

?>

[ Controller ]

SiteController.php

เรียกใช้งานโดย index.php?r=site/import

โค๊ด: [Select]
<?php

use app\models\UploadCSV;
use 
yii\web\UploadedFile;


// ส่วนหนึ่งในเนื้อหาไฟล์

public function actionImport()
    {
        
$model = new UploadCSV();
$filename='';
if (Yii::$app->request->isPost) {
$model->file UploadedFile::getInstance($model'file');
if ($model->validate()) {
$model->file->saveAs('upload/'$model->file->baseName.'.'.$model->file->extension);
$filename=$_FILES['UploadCSV']['name']['file']; //phpinfo();
}
}
return $this->render('import', ['model' => $model,'filename'=>$filename]);
}

?>


[ View ]

import.php

โค๊ด: [Select]
<?php

use yii\helpers\Html;
use 
yii\widgets\ActiveForm;
use 
app\models\UploadCSV;
/* @var $this yii\web\View */
/* @var $model app\models\Simcard */
/* @var $form yii\widgets\ActiveForm */
?>



<?php
$model=new UploadCSV();

if (!empty($filename)) 
{
?>

    <div class="jumbotron">
<h1>ได้รับไฟล์ข้อมูลแล้ว</h1>


<p class="lead">โปรดตรวจสอบเนื้อหาอีกครั้ง เพื่อเช็คความเรียบร้อย</p>

<p><a class="btn btn-lg btn-success" href="index.php">กลับสู่หน้าแรก</a></p>
<h2><?=$filename; ?></h2>
<?php if (($_FILES["UploadCSV"]["type"]["file"]=="image/jpeg")||
($_FILES["UploadCSV"]["type"]["file"]=="image/gif")||
($_FILES["UploadCSV"]["type"]["file"]=="image/png")) 
echo "<img src=upload/".$filename.">"?>


<?php  if ($_FILES["UploadCSV"]["type"]["file"]=="text/comma-separated-values"
echo "<h1>CSV</h1>";
?>

</div>


<?php
//echo phpinfo();
}
else
{
?>



<div class="upload-form">

    <?php $form ActiveForm::begin(['options' => ['enctype' => 'multipart/form-data']]); ?>

<?= $form->field($model, 'file')->fileInput() ?>

   
    <div class="form-group">
        <?= Html::submitButton( 'ส่งข้อมูล', ['class' =>'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

</div>

<?php
}
?>