|
|
|
มีปัญหาอัพโหลด file csv เข้า DB ข้อมูลภาษาไทยเข้าไม่ครบค่ะ |
|
|
|
|
|
|
|
พอดีอัพไฟล์แล้วข้อมูลภาษาไทยเข้าไม่ครบค่ะ
,,,310480,49,"Cooperative Education
สาขาวิชาวิทยาการคอมพิวเตอร์ รหัส 53",6 (0-18-0),1,38,Arr,,"อาจารย์B อาจารย์C",
,,,885201,53,"English for Informatics
เทคโนโลยีสารสนเทศ 4 ปี รหัส 56",3 (3-0-6),1,50,MO,09:00-11:50 M-IT S1,อาจารย์A,
จากตัวอย่างไฟล์ค่ะ ข้อมูลที่มี " "จะเข้าฐานข้อมมูลครบ แต่ถ้าไม่มี " " จะไม่เข้าเลย ไม่สามารถให้ผู้ใช้เพิ่มเองได้ด้วยค่ะ เพราะว่ามีข้อมูลหลายร้อยบรรทัดเลย ไ่ทราบว่าพอจะมีวิธีแก้ไขไหมคะ ภาษาไทยก็เข้าปกตินะคะ เพียงแต่ข้อมูลบางอันไม่เข้า
รบกวนข้อความรู้ด้วยค่ะ
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2015-03-02 11:51:05 |
By :
ipchully |
View :
1477 |
Reply :
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แปลงเป็น UTF-8 หรือเปล่าครับ ในฐานข้อมูลกำหนดการเก็บอักษรกี่ตัวครับ
|
ประวัติการแก้ไข 2015-03-02 12:07:36
|
|
|
|
Date :
2015-03-02 12:06:54 |
By :
LAGO |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
แปลงไฟล์ csv แล้วค่ะ นี่โค้ด
Code (PHP)
<?php
$objConnect = mysql_connect("localhost","","") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("");
mysql_query("SET CHARACTER SET utf8");
$url = $_SERVER['REQUEST_URI'];
$parts = parse_url($url);
parse_str($parts['query'], $query);
$year = $query['year'];
$term = $query['term'];
$sqlFileName = "select * from `fileUpload` where isenable=1";
$resultFileName=mysql_query($sqlFileName);
$rowFileName=mysql_fetch_assoc($resultFileName);
$objCSV = fopen($rowFileName["fileName"], "r");
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
mysql_query("SET NAMES UTF8");
$string2 = $objArr[6];
$Arr2 = explode("(",$string2);
$string3 = $Arr2[1];
$Arr3 = explode("-",$string3);
$hour_lect = $Arr3[0];
$hour_lab = $Arr3[1];
$ArrCredit = explode(" ",$string2);
$string22 = $objArr[11];
$Arr22 = explode(",",$string22);
$sqlCheckData1 = "select * from teacher where teacherName = '".$Arr22[0]."'";
$queryCheckData1 = mysql_query($sqlCheckData1);
$numRowCheckData1 = mysql_num_rows($queryCheckData1);
$sqlCheckData2 = "select * from teacher where teacherName = '".$Arr22[1]."'";
$queryCheckData2 = mysql_query($sqlCheckData2);
$numRowCheckData2 = mysql_num_rows($queryCheckData2);
if(($objArr[3] != null || $objArr[3] != "") && $objArr[3] != "COURSECODE1"){
$strSQL2 = "INSERT INTO `classroom`(`year`,
`term`,
`departmentId`,
`credit`,
`studentNum`,
`dayTeach`,
`timeTeach`,
`departmentName`,
`groupA`,
`teacherNameC`,
`course`)
VALUES ('".$year."',
'".$term."',
'".$objArr[3]."',
'".$ArrCredit[0]."',
'".$objArr[8]."',
'".$objArr[9]."',
'".$objArr[10]."',
'".$objArr[5]."',
'".$objArr[7]."',
'".$objArr[11]."',
'".$objArr[4]."')";
$id_ClassRoom = mysql_insert_id();
$sql33 = "SELECT startDate,endDate FROM educational WHERE term='$term' limit 1";
$result33 = mysql_query($sql33);
$value33 = mysql_fetch_object($result33);
$_startDate = $value33->startDate;
$_endDate = $value33->endDate;
$date = date("Y-m-d");
$date22 = date("Y-m-d");
$date9 = str_replace('-', '/', $date22);
$date99= date("Y-m-d",strtotime($date9 . "+10 days"));
while($date <= $date99 ){
$spDay = explode('-', $date);
$_day = $spDay[2]."-".$spDay[1]."-".$spDay[0];
if( jddayofweek ( cal_to_jd(CAL_GREGORIAN, $spDay[1],$spDay[2], $spDay[0]) , 1 ) == "Sunday" ){
//echo $date;
}
$date1 = str_replace('-', '/', $date);
$date= date("Y-m-d",strtotime($date1 . "+1 days"));
}
mysql_query($strSQL2);
if($numRowCheckData1 == 0){
if($Arr22[0] != null || $Arr22[0] != ""){
$strSQL41 = "INSERT IGNORE INTO `teacher`(`teacherName`) VALUES ('".$Arr22[0]."')";
mysql_query($strSQL41);
}
}
if($numRowCheckData2 == 0){
if($Arr22[1] != null || $Arr22[1] != ""){
$strSQL42 = "INSERT IGNORE INTO `teacher`(`teacherName`) VALUES ('".$Arr22[1]."')";
mysql_query($strSQL42);
}
}
//$strSQL6 = "DELETE FROM teacher WHERE teacherName =teacherName";
//mysql_query($strSQL6);
$strSQL3 = "INSERT INTO `department`(`departmentName`, `credit`, `hour_lect`, `hour_lab`, `cousre`, `departmentId`) VALUES ('".$objArr[5]."','".$objArr[6]."','".$hour_lect."','".$hour_lab."','".$objArr[4]."','".$objArr[3]."')";
mysql_query($strSQL3);
}
}
fclose($objCSV);
echo "Import Done.";
?>
|
|
|
|
|
Date :
2015-03-02 12:16:20 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทดสอบง่ายๆแบบนี้ก่อนครับ ดูว่าข้อมูลเรามาครบหมดหรือเปล่า
Code (PHP)
<?php
$objCSV = fopen('Book.csv', "r");
while ($objArr = fgetcsv($objCSV, 1000, ",")) {
print_r($objArr);
}
?>
|
|
|
|
|
Date :
2015-03-02 13:32:22 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตามที่พี่ Chaidhanan แนะนำให้ echo ออกมา ปรากฏว่า ได้แบบนี้ค่ะ
Array ( [0] => [1] => [2] => [3] => 310480 [4] => 49 [5] => Cooperative Education สาขาวิชาวิทยาการคอมพิวเตอร์ รหัส 53 [6] => 6 (0-18-0) [7] => 1 [8] => 38 [9] => Arr [10] => [11] => อาจารย์B, อาจารย์C [12] => )
Array ( [0] => [1] => [2] => [3] => 885201 [4] => 53 [5] => English for Informatics เทคโนโลยีสารสนเทศ 4 ปี รหัส 56 [6] => 3 (3-0-6) [7] => 1 [8] => 50 [9] => MO [10] => 09:00-11:50 M-IT S1 [11] => [12] => )
มีข้อมูลของอาจารย์ Bและ C แต่บรรทัดต่อมาไม่มีข้อมูลอาจารย์ แต่ในไฟล์มีข้อมูลอาจารย์อยู่ ไม่ทราบว่าเกิดจากอะไรเหมือนกันค่ะ
|
|
|
|
|
Date :
2015-03-02 13:42:23 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code
,,,310480,49,"Cooperative Education
สาขาวิชาวิทยาการคอมพิวเตอร์ รหัส 53",6 (0-18-0),1,38,Arr,,"อาจารย์เบญจภรณ์ ทดสอบ, อาจารย์ ดร.ทดสอบ ทดสอบ, อาจารย์ทดสอบ ทดสอบ, ผู้ช่วยศาสตราจารย์ ดร.ทดสอบ ทดสอบ",
,,,885201,53,"English for Informatics
เทคโนโลยีสารสนเทศ 4 ปี รหัส 56",3 (3-0-6),1,50,MO,09:00-11:50 M-IT S1,อาจารย์ญาญ่า บุญมี,
,,,885201,53,"English for Informatics
เทคโนโลยีสารสนเทศ 4 ปี รหัส 56",3 (3-0-6),2,62,TH,09:00-11:50 KB-406,อาจารย์ญาญ่า บุญมี,
,,,886200,54,"Introduction to Computer Science
สาขาวิชาวิทยาการคอมพิวเตอร์ (56)",3 (3-0-6),1,51,FR,09:00-11:50 SD-513,อาจารย์เพชร อ้นปันส์,
,,,886200,54,"Introduction to Computer Science
สาขาวิชาวิทยาการคอมพิวเตอร์ (56)",3 (3-0-6),2,53,TH,09:00-11:50 SD-514,อาจารย์เพชร อ้นปันส์,
,,,886201,54,"Programming Fundamental I
สาขาวิชาวิทยาการคอมพิวเตอร์ (56)",3 (2-2-5),1,36,"TU
TU","15:00-16:50 SD-319
17:00-18:50 KB-201",อาจารย์พรวณัฐ ทดสอบ,
ข้อมูลค่ะ พอลองอัพแล้วข้อมูลวิชา310480 เป็นวิชาเดียวที่ข้อูลอาจารย์ผู้สอนเข้าค่ะ อันอื่นๆอาจารย์ผู้สอนไม่เข้าเลย
|
ประวัติการแก้ไข 2015-03-02 14:48:22 2015-03-02 14:49:14
|
|
|
|
Date :
2015-03-02 14:47:19 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
code บันทัดที่ 18 เอาไปแทน บันทัดที่ 5 ทำครั้งเดียวพอครับ ไม่ต้องเอาไว้ใน loop
เป็นการทำงาน ทั้ง connection session นั้น จะเปลี่ยนเมื่อมีการสั่งใหม่ครับ หรือปิด connection
|
|
|
|
|
Date :
2015-03-02 15:13:10 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณค่ะ ได้แก้ไข บรรทัดที่ 5 และ 18 แล้วค่ะ
แต่ยัง งงๆอยู่ทำไมของพี่ทำได้
หรือมีปัญหาที่หน้าอัพโหลดรึป่าวคะ
Code (PHP)
<?php
$objConnect = mysql_connect("localhost","","") or die("Error Connect to Database"); // Conect to MySQL
$objDB = mysql_select_db("");
mysql_query("SET NAMES UTF8");
$year = $_POST["year"];
$term = $_POST["term"];
if(isset($_FILES['file']) && $_FILES['file']['error']==0){
$dir = "upload/";
$name = $_FILES['file']['name'];
$path = $dir.$name;
move_uploaded_file($_FILES['file']['tmp_name'], $path);
$strSQLDel = "update fileUpload set isenable=0";
$strSQL = "INSERT INTO `fileUpload` (`fileName`, `dateCreate`, `isenable`) VALUES ('".$name."',now(),'1')";
mysql_query($strSQL);
echo "<meta http-equiv='refresh' content='0;URL=upload/upload22.php?file=upload/upload22.php&year=".$year."&term=".$term."'>";
}
?>
|
ประวัติการแก้ไข 2015-03-02 15:26:19
|
|
|
|
Date :
2015-03-02 15:23:46 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวอย่างโค๊ด โหลดไฟล์ csv ที่ผิด format
Code (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>TEST</title>
<head>
<body>
<?php
function mat ($m) {
$hex=$m[0]; $ln=strlen($hex);
return '(Base64:)'.base64_encode( substr($hex,1, $ln-2));
}
function hk_decode($input) {
$p="#\"[^\"]*\"#";
return preg_replace_callback( $p, mat , $input );
}
$x=file_get_contents( 'Book.csv' );
$xde_code = hk_decode($x);
$ar=explode("\r", $xde_code);
foreach($ar as $ro):
$row=explode(',', $ro);
foreach($row as $k=>$vl){
$vl = ( strpos($vl, 'Base64') ? base64_decode(str_replace('(Base64:)', '', $vl)) : $vl);
$row[$k]=$vl;
}
print_r($row);
endforeach;
?>
</body>
</html>
|
ประวัติการแก้ไข 2015-03-02 18:24:46
|
|
|
|
Date :
2015-03-02 17:59:30 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
พี่ Chaidhanan ออกมาเป็นหน้าว่างๆค่ะ
|
|
|
|
|
Date :
2015-03-02 18:16:56 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ของโทษ ปรับโค๊ดแก้ไม่หมด
26.print_r($row, true);
แก้เป็น
26.print_r($row);
|
|
|
|
|
Date :
2015-03-02 18:23:23 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ลองประยุกต์ใช้ดูนะครับ จากโค๊ดเก่า เอาส่วนที่ generate $SQL มาแทนที่ print_r($row);
และ เปลี่ยนตัวแปร $row เป็น $objArr ตามของเก่า
|
|
|
|
|
Date :
2015-03-02 18:57:44 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆเลยค่ะ ไม่ทราบว่ามันเกิดมาจากสาเหตุอะไรหรอคะ
|
|
|
|
|
Date :
2015-03-02 19:00:54 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
format มันไม่มาตรฐาน นะครับ ถ้าใส่ " (double quote) ครอบ ทุก cell ที่เป็น text ก็คงไม่มีปัญหาครับ
ตัวเลขไม่ต้องครอบก็ได้
ปล. ผมยัง Save Excel to CSV ให้เป็นภาษาไทย ยังไม่ได้เลยครับ 5555 ไม่ค่อยชำนาญ office รุ่นใหม่
|
ประวัติการแก้ไข 2015-03-02 19:09:00
|
|
|
|
Date :
2015-03-02 19:06:39 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากๆค่ะ
|
|
|
|
|
Date :
2015-03-02 19:10:34 |
By :
ipchully |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|