|
|
|
.csv import ภาษาไทยหายไป, ภาษาไทยเข้า db ไม่ได้ รบกวนด้วยครับ |
|
|
|
|
|
|
|
ขอดู Code เต็ม ๆ หน่อยครับ หรือไม่ลอง echo ค่าตัวแปร $strSQL ออกมาให้ดูหน่อยครับ
|
|
|
|
|
Date :
2015-03-08 09:20:04 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบความคิดเห็นที่ : 1 เขียนโดย : mr.win เมื่อวันที่ 2015-03-08 09:20:04
รายละเอียดของการตอบ ::
โค้ดทั้งหมดครับ
Code (PHP)
<?php
function __construct()
{
header("content-type:text/html;charset=utf-8");
}
session_start();
?>
<html>
<head>
</head>
<body>
<?php
// header("content-type:text/html;charset=utf-8");
$name='maintenance_'.date('Y-m-d_hia').'.csv';
if(copy($_FILES["FileMaintenance"]["tmp_name"],"../../Warehouse/File/".$name))
{
include('Connection.php');
include('../Repository/MachineRepository.php');
//get Username from Admin
$strSQL = "SELECT USER_NAME FROM ADMIN WHERE ADMIN_ID = ". $_SESSION["UserId"];
$objQuery = mysql_query($strSQL);
$objResult = mysql_fetch_array($objQuery);
$RecordName = $objResult['USER_NAME'];
$objCSV = fopen("../../Warehouse/File/".$name, "r");
fgets($objCSV); //skip frist row
$i = 1;
$StartDate;
$EndDate;
$JobType;
$JobNo;
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
if ($i < 5)
{
//Date
if ($i == 1)
{
$StartDate = $objArr[15];
$EndDate = $objArr[16];
}
elseif ($i == 2)
{
$JobType = $objArr[15];
}
elseif ($i == 3)
{
$JobNo = $objArr[15];
}
}
else
{
$strSQL = "INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (";
$strSQL .= "NULL, ";//JOB_ID
$strSQL .= "'" . $JobNo . "', ";//JOB_NO
$strSQL .= "'" . $JobType . "', ";//JOB_TYPE
$MC_ID = GetMahineIdByName($objArr[1]);
$strSQL .= $MC_ID . ", ";//$strSQL .= $objArr[] . ", ";//MC_ID
$DateConverted = str_replace('/', '-', $StartDate);
$DateConverted = date('Y-m-d', strtotime($DateConverted));
$strSQL .= "'" . $DateConverted . "', ";//START_DATE
$DateConverted = str_replace('/', '-', $EndDate);
$DateConverted = date('Y-m-d', strtotime($DateConverted));
$strSQL .= "'" . $DateConverted . "', ";//END_DATE
$strSQL .= "'" . $objArr[2] . "', ";//RUNTIME
$strSQL .= "'" . $objArr[13] . "', ";//JOB_DETAIL
$strSQL .= "'" . $objArr[14] . "', ";//ERROR_LOG
$strSQL .= CovertValue($objArr[3]) . ", ";//V1
$strSQL .= CovertValue($objArr[4]) . ", ";//V2
$strSQL .= CovertValue($objArr[5]) . ", ";//V3
$strSQL .= CovertValue($objArr[6]) . ", ";//V4
$strSQL .= CovertValue($objArr[7]) . ", ";//J1
$strSQL .= CovertValue($objArr[8]) . ", ";//J2
$strSQL .= CovertValue($objArr[9]) . ", ";//J3
$strSQL .= CovertValue($objArr[10]) . ", ";//J4
$strSQL .= CovertValue($objArr[11]) . ", ";//J5
$strSQL .= CovertValue($objArr[12]) . ", ";//J6
$strSQL .= "'" . $objArr[15] . "', ";//COMMENT
$strSQL .= "'" . $objArr[16] . "', ";//SUGGEST_PART
//$strSQL .= "'" . "ทดสอบ" . "', ";//SUGGEST_PART
$strSQL .= "'" . $objArr[17] . "', ";//STATUS
$strSQL .= "'" . date("Y-m-d") . "', ";//RECORD_DATE
$strSQL .= "'" . $RecordName . "'); ";//$strSQL .= "'" . $objArr[] . "'); ";//RECORD_BY
//mysql_query("SET NAMES UTF8");
mysql_query("SET character_set_results=utf8");//ตั้งค่าการดึงข้อมูลออกมาให้เป็น utf8
mysql_query("SET character_set_client=utf8");//ตั้งค่าการส่งข้อมุลลงฐานข้อมูลออกมาให้เป็น utf8
mysql_query("SET character_set_connection=utf8");//ตั้งค่าการติดต่อฐานข้อมูลให้เป็น utf8
echo $strSQL."<br>";
//echo mb_detect_encoding($objArr[15])."<br>";
//echo iconv("UTF-8", "UTF-8", $comment);;
// echo $test."abc<br><br>";
// var_dump(get_defined_vars());die;
if (mysql_query($strSQL)){
// echo "success";
}else{
mysql_error();
}
}
++$i;
}
fclose($objCSV);
die();
echo "<script type='text/javascript'>
window.location='../NewItem.php?s=1';
</script>";
}
else
{
echo "<script type='text/javascript'>
window.location='../NewItem.php?ErrType=1';
</script>";
}
function CovertValue($Val)
{
if ($Val == '-')
{
return '0';
}
else
{
return $Val;
}
}
?>
</body>
</html>
ก็คือว่า ถ้าผมนำไฟล์ .xlsx ของลูกค้า save เป็น CSV (Comma delimited) (*.csv)
แล้ว import ไปเลย ก็จะ echo ได้มาเป็นแบบนี้ครับ
Code
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - ควรตรวจเช็คJ3, ควรตรวจเช็ค J4 (Bearing)', '', '', '2015-03-08', 'admin');
ผลลัพธ์คือ ภาษาไทย ไม่เข้า db ครับ
แต่ถ้าผม save เป็น csv แล้ว นำไปเปิดใน notepad แล้ว save เป็น UTF 8 อีกที ก็จะ echo ออกมาเป็นได้แบบนี้ครับ
Code
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - เธเธงเธฃเธ•เธฃเธงเธเน€เธเนเธJ3, เธเธงเธฃเธ•เธฃเธงเธเน€เธเนเธ J4 (Bearing)', '', '', '2015-03-08', 'admin');
ผลลัพธ์คือ ภาษาไทย เข้า db ครับ
แต่ว่าผมอยากให้ User แค่ save เป็น .csv แล้วก็ import เลยอ่ะครับ
|
ประวัติการแก้ไข 2015-03-08 14:19:01
|
|
|
|
Date :
2015-03-08 14:17:53 |
By :
JedsadaNgow |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เพิ่มเติมครับ
ตอนนี้ผมใช้คำสั่ง
Code (PHP)
iconv(mb_detect_encoding($text, mb_detect_order(), true), "UTF-8", $text);
ปรากฎว่าได้ครับ ในส่วนของเครื่อง dev
แต่พอเอาขึ้น Server มันไม่ได้ครับ
พอ echo ดู ได้ตามนี้ครับ
เครื่อง Dev
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 165, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - เธเธงเธฃเธ•เธฃเธงเธเน€เธเนเธJ3, เธเธงเธฃเธ•เธฃเธงเธเน€เธเนเธ J4 (Bearing)', '', '', '2015-03-09', 'admin');
เครื่อง Server
INSERT INTO MAINTENANCE (JOB_ID,JOB_NO,JOB_TYPE,MC_ID,START_DATE,END_DATE,RUNTIME,JOB_DETAIL,ERROR_LOG,V1,V2,V3,V4,J1,J2,J3,J4,J5,J6,COMMENT,SUGGEST_PART,STATUS,RECORD_DATE,RECORD_BY) VALUES (NULL, 'US-1401012', 'PERIOD CHECK', 6, '2014-01-19', '2014-01-19', '6000 / 2949', '', '', 0, 1.0, 0.1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, ' - ', '', '', '2015-03-08', 'admin');
|
|
|
|
|
Date :
2015-03-09 01:13:52 |
By :
JedsadaNgow |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|