 |
ขอถามหน่อยค่ะ ถ้า Import file excel To MySQL (PHP Excel (PHP Class)) แล้วทำการ Import ไฟล์ไปอีกครั้ง จะให้เช็คว่า ถ้าข้อมูลซ้ำให้ UPDATE แต่ถ้าไม่ซ้ำให้ INSERT ค่ะ |
|
 |
|
|
 |
 |
|
ขอถามหน่อยค่ะ ถ้า Import file excel To MySQL (PHP Excel (PHP Class)) แล้วทำการ Import ไฟล์ไปอีกครั้ง จะให้เช็คว่า ถ้าข้อมูลซ้ำให้ UPDATE แต่ถ้าไม่ซ้ำให้ INSERT ค่ะ
ให้เช็คที่ฟิลด์ EMNO เป็นหลักค่ะ
Code (PHP)
<!-- -Attach File Excel-->
<?php
/** PHPExcel */
require_once 'include/PHPExcel/Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'include/PHPExcel/Classes/PHPExcel/IOFactory.php';
$filepath = "file_excel.xlsx;
$inputFileName = $filepath;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' ";
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
mysql_query($strSQL) or die(mysql_error());
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='insert.php';</script>");
?>
Tag : PHP, MySQL, CakePHP
|
ประวัติการแก้ไข 2015-03-16 13:17:18
|
 |
 |
 |
 |
Date :
2015-03-16 13:15:21 |
By :
loomoo |
View :
1914 |
Reply :
4 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
สามารถใช้คำสั่ง REPLACE ได้เลยครับ 
Code (SQL)
replace into tb_name (field) values ('val1')
|
 |
 |
 |
 |
Date :
2015-03-16 13:44:37 |
By :
Manussawin |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
Code
<!-- -Attach File Excel-->
<?php
/** PHPExcel */
require_once 'include/PHPExcel/Classes/PHPExcel.php';
/** PHPExcel_IOFactory - Reader */
include 'include/PHPExcel/Classes/PHPExcel/IOFactory.php';
$filepath = "file_excel.xlsx;
$inputFileName = $filepath;
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setReadDataOnly(true);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];
$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
$dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
++$r;
foreach($headingsArray as $columnKey => $columnHeading) {
$namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
}
}
}
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$chkDdata = mysql_query("SELECT EMNO FROM employee_tb WHERE EMNO = '".$result["EMNO"]."' ");
if(mysql_num_rows($chkDdata)<=0){ #ถ้าเช็คข้อมูลใน DB แล้วไม่มีข้อมูลเก่าอยู่ก็ให้ทำการบันทึก
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) ";
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' ";
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
mysql_query($strSQL) or die(mysql_error());
} else {
#ถ้ามีข้อมูลนี้อยู่แล้วก็ให้ทำการอัพเดท เขียนเอาเองนะครับ
}
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='insert.php';</script>");
?>
|
 |
 |
 |
 |
Date :
2015-03-16 13:48:48 |
By :
arm8957 |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณมากค่ะ คุณ คนธรรมดา ไม่พิเศษ
ช่วยแนะนำต่ออีกสักนิดได้ไหมค่ะ พยายามลองทำเองแล้วติด Error ค่ะ
Error
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE EMNO = '11020769'' at line 10
Code (PHP)
<?
$i = 0;
foreach ($namedDataArray as $result) {
$i++;
$chkDdata = mysql_query("SELECT EMNO FROM employee_tb WHERE EMNO = '".$result["EMNO"]."' ");
if(mysql_num_rows($chkDdata)<=0){ #ถ้าเช็คข้อมูลใน DB แล้วไม่มีข้อมูลเก่าอยู่ก็ให้ทำการบันทึก
$strSQL = "";
$strSQL .= "INSERT INTO employee_tb";
$strSQL .= "(EMNO, TITLE_TH, NAME_TH, SURNAME_TH, TITLE_EN, NAME_EN, SURNAME_EN, POSITION, DEPT, TEL, PIC) "; //ชื่อ Column ของ DB MySQL
$strSQL .= "VALUES ";
$strSQL .= "('".$result["EMNO"]."','".$result["TITLE_TH"]."','".$result["NAME_TH"]."','".$result["SURNAME_TH"]."' "; //ชื่อ Column ของ File Excel (.xls , xlsx)
$strSQL .= ",'".$result["TITLE_EN"]."','".$result["NAME_EN"]."','".$result["SURNAME_EN"]."','".$result["POSITION"]."' ";
$strSQL .= ",'".$result["DEPT"]."','".$result["TEL"]."' ";
$strSQL .= ",'-') ";
} else {
$sql = "select * from employee_tb where EMNO = '".$result["EMNO"]."' ";
$result = mysql_query($sql) or exit($sql);
$row = mysql_fetch_array($result);
$strSQL = "UPDATE employee_tb SET
TITLE_TH = '".$result["TITLE_TH"]."',
NAME_TH = '".$result["NAME_TH"]."',
SURNAME_TH = '".$result["SURNAME_TH"]."',
TITLE_EN = '".$result["TITLE_EN"]."',
NAME_EN = '".$result["NAME_EN"]."',
SURNAME_EN = '".$result["SURNAME_EN"]."',
POSITION = '".$result["POSITION"]."',
DEPT = '".$result["DEPT"]."',
WHERE EMNO = '".$row["EMNO"]."' ";
}
mysql_query($strSQL) or die(mysql_error());
}
mysql_close($objConnect);
exit("<script>alert('Import Complete');window.location='frm_insert.php';</script>");
?>
|
 |
 |
 |
 |
Date :
2015-03-16 14:52:22 |
By :
loomoo |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|