|
|
|
อัพโหลดไฟล์ แล้วบันทึกลงฐานข้อมูลที่เป็นภาษาไทยไม่ได้ครับ |
|
|
|
|
|
|
|
สวัสดีครับ
คือผมทำโค้ดอัพโหลดไฟล์ ขึ้น server และให้มีการอ่านข้อมูลจากไฟล์ เพื่อบันทึกลงฐานข้อมูลครับ
การอัพโหลด หรือบันทึกข้อมูล ก็ทำได้ปกติครับ แต่ติดตรงที่ หากฟิลด์ข้อมูลในไฟล์เป็นภาษาไทย มันจะไม่ยอมบันทึกลงฐานข้อมูลให้อ่ะครับ
ดังภาพ
ผมได้ลองเปลี่ยน charset ทั้ง tis620 มาเป็น utf8 แล้วก็ยังไม่ได้ครับ
จากโค้ด ด้านล่างนี้นะครับ
Code (PHP)
<?php
if($action=="import"){
$file=$_FILES['u_file']['tmp_name'];
$file_name=$_FILES['u_file']['name'];
$file_size=$_FILES['u_file']['size'];
$file_type=$_FILES['u_file']['type'];
if($file==""){
echo"<script>alert('กรุณาแนบไฟล์ด้วย');</script>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=admin-student.html;importstudent\" />";
}else{
$ext=strtolower(end(explode('.',$file_name)));
if($ext=="txt" or $ext=="csv"){
$path="tmp_upload";
$filename="uploadstudent.$ext";
move_uploaded_file($file,"$path/$filename");
$namefile="$path/$filename";
$oCSV=fopen("$namefile","r");
mysql_query("SET CHARACTER SET utf8");
while(($objArr=fgetcsv($oCSV,1000,","))!==FALSE){
$sql="INSERT INTO t_student";
$sql.="(std_idcard,std_stdid,std_sex,std_name,std_surname,std_birthdate,std_class,std_room,std_status,std_status_46)";
$sql.="VALUES";
$sql.="('".$objArr[0]."','".$objArr[1]."','".$objArr[2]."','".$objArr[3]."','".$objArr[4]."','".$objArr[5]."','".$objArr[6]."','".$objArr[7]."','".$objArr[8]."','".$objArr[9]."')";
$Qsql=mysql_query($sql);
}
fclose($oCSV);
if($Qsql){
echo"<script>alert('นำเข้าข้อมูลเรียบร้อย');</script>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=admin-student.html;importstudent\" />";
}else{
echo"<script>alert('ไม่สามารถนำเข้าข้อมูลได้ในขณะนี้');</script>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=admin-student.html;importstudent\" />";
}
}else{// $ext
echo"<script>alert('ไฟล์ที่นำเข้าไม่ถูกต้อง กรุณาใช้ไฟล์ .csv หรือ .txt เท่านั้น');</script>";
echo"<meta http-equiv=\"refresh\" content=\"0;URL=admin-student.html;importstudent\" />";
}
}//file==""
}
?>
ข้อสังเกตนะครับ
1. ผมลองอัพโหลดในเครื่องผมเอง ปกติทุกอย่าง (ผมใช้ appserv 2.5.10)
2. ก่อนหน้านี้ ในโฮสต์ที่ผมเช่านั้น ผมก็ใช้สคริปต์นี้ได้ปกติครับ หมายถึง สามารถบันทึกไฟล์ภาษาไทยได้ปกติครับ
3. หลังจากทางโฮสต์มีการอัพเดตเวอร์ชันของ PHP 5.xx ก็ทำให้ไม่สามารถใช้งานได้
รบกวนช่วยตรวจสอบให้ผมด้วยครับ ผมควรจะแก้ไขตรงส่วนไหนบ้างครับ
ขอบคุณครับ
Tag : PHP, MySQL
|
|
|
|
|
|
Date :
2013-05-18 16:15:53 |
By :
yomaster |
View :
937 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รบกวนช่วยแนะนำผมหน่อยคับ T_T
|
|
|
|
|
Date :
2013-05-19 12:51:55 |
By :
yomaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เปลี่ยนชื่อไฟล์ให้เป็นภาษาอังกฤษครับ ไม่งั้นก็จะแก้ปัญหาไม่จบ และอาจจะมีปัญหาระยะยาวครับ
|
|
|
|
|
Date :
2013-05-19 17:46:49 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สวัสดีครับ พี่วิน
คือยังงี้ครับ
ชื่อไฟล์ เป็น ภาษาอังกฤษ อยู่แล้วครับ คือ uploadstudent.$ext
แต่ปัญหา มันอยู่ที่ เนื้อหาในไฟล์ ครับ
หากบรรทัดใดๆ ในไฟล์ มีข้อความที่เป็นภาษาไทย ตรง คอลัมน์ใดๆ มันก็จะไม่บันทึกข้อความนั้นๆ ให้ครับ
ดังในรูป
จะเห็นเป็นภาษาไทยทั้งสอง
เมื่อทำการอัพโหลดไฟล์ไปและบันทึก
ตรงฟิลด์ที่เป็นภาษาไทย (ชื่อ - นามสกุล) มันจะไม่เก็บเข้าให้ แต่ ฟิลด์อื่นๆ เก็บให้ตามปกติ (เลขประจำตัว วันเกิด ระดับชั้น ห้อง)
แต่ถ้าหากเรคอร์ดใดๆ ไม่มีภาษาไทย มันก็สามารถบันทึกได้ตามปกติครับผม
ผมก็เลยไม่รู้ว่าเป็นที่อะไรครับ
|
|
|
|
|
Date :
2013-05-19 21:40:58 |
By :
yomaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ๋อ ลองใช้พวก iconv() ครับ
|
|
|
|
|
Date :
2013-05-19 21:48:38 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|