ยินดีต้อนรับ กรุณา สมัครสมาชิก หรือเข้าสู่ระบบ

Home » webboard » PHP
เข้าชม : 12264

การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql

โพสต์เมื่อ: วันอาทิตย์ 3 เมษายน 2554  16:21 น.

ซึ่งในชีวิตการทำงานจริงๆ การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql คงต้องมีแน่นอนโดยเฉพาะคนที่ดูแลเกี่ยวกับเว็บ Application ที่ใช้ฐานข้อมูล MySql

ก่อนอื่นต้องเตรียมไฟล์ Excel ที่เราจะทำการ Import ลง db วิธีเตรียมไฟล์คือ

ก่อนอื่นต้องทำความเข้าใจก่อนว่าเวลาเอาข้อมูลไปใส่ในฐานข้อมูล

ข้อมูลในแนวตั้ง(column) ในไฟล์ excel จะเป็นข้อมูลที่ตรงกับ ฟิวด์แต่ละฟิวในฐานข้อมูล
ข้อมูลในแนวนอน(row) ในไฟล์ excel จะเป็นข้อมูลที่เป็้น เรคคอร์ดในฐานข้อมูล

ถ้าไม่เข้าใจลองเทสๆๆ import ดูครับ

เปลี่ยนนามสกุลไฟล์เป็น .xml โดยปกติไฟล์ Excel จะมีนามสกุลเป็น .xls ก็ให้เปลี่ยนเป็นนามสกุล  .xml 
วิธีการเปลี่ยนก็คือเปิดไฟล์ Excel ที่ต้องการขึ้นมาแล้วไปที่  File > Save as แล้วเลือกชนิดไฟล์เป็น XML Spreadsheet(*.xml) แค่นี้เราก็จะได้ไฟล์ใหม่นามสกุล .xml ครับ

แทนที่ช่องว่างของ cell ด้วย - เนื่องจากเวลาที่รันโปรแกรม โปรแกรมมันจะไม่นับเรคคอร์ดของ cell ที่มีช่องว่าง ทำให้การนับเรคคอร์ดของโปรแกรมผิดพลาด ดังนั้นเราควรจะแทนที่ช่องว่างด้วย - ซึ่งสามารถทำได้ง่ายๆโดย กด Ctrl+F ก็จะขึ้นป๊อบอัพค้นหาขึ้นมา แล้วให้คลิกที่แถบ Raplace ตรงช่อง Find what ให้เว้นว่างใว้ ส่วนช่อง Replace with ให้ใส่ - เพื่อเป็นการค้นหาช่องว่างแล้วแทนที่้ด้วย -

แทนที่เครื่องหมาย ' ด้วยช่องว่าง เนื่องจากในคำสั่ง Sql เวลาใช้เครื่องหมาย ' เข้าไปด้วยจะทำให้โปรแกรมทำงานผิดพลาดดังนั้นควร ค้นหา ' แล้วแทนที่ด้วยช่องว่าง ทำคล้ายๆข้อที่ผ่านมา

เสร็จแล้วก็ Save ไฟล์ ก็สิ้นสุดวิธีการเตรียมไฟล์ใว้เพื่อ Import เข้า DB คับ


ต่อมาก็มาดูการเขียนโค๊ดเพื่อทำการ  Import ไฟล์ Excel เข้า DB คับ

เริ่มเลยคับ ก่อนอื่นให้สร้างไฟล์ชื่อ uploadExcel.php ใว้เป็นฟอร์มสำหรับ browse ไฟล์ ซึ่่งภายในไฟล์เขียนโค๊ดดังนี้

<!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=tis-620" />
<title>Untitled Document</title>
</head>
<body>
<form enctype="multipart/form-data" action="import.php" method="post">
 <input type="hidden" name="MAX_FILE_SIZE" value="2000000" />
 <input name="file" type="file" />
 <input type="submit" value="Upload" />
</form>

</body>
</html>



 
ขั้นตอนต่อมาสร้างไฟล์ชื่อ import.php เป็นไฟล์สำหรับดึงข้อมุลจากไฟล์ Excel มาใส่ใน MySql ซึ่งภายในไฟล์เขียนโค๊ดดังนี้

<?php 
    
if ( $_FILES['file']['error'] ) { 
        die(
"upload error "); 
    } 
  
 
//======Connect DB======================//   
    
$m_host "localhost"
    
$m_user "root"
    
$m_pass "pwd"
    
$m_name "dbname"

    
mysql_connect($m_host,$m_user,$m_pass);  
    
mysql_select_db($m_name); 
    
mysql_query("SET NAMES tis620"); 
 
//======End Connect DB======================//   

 //======Get data from Excel======================//        
    
$dom    =    DOMDocument::load$_FILES['file']['tmp_name'] ); 
    
$rows    =    $dom->getElementsByTagName'Row' ); 
    
$row    =    0
     
    foreach (
$rows as $temp) { 
        
$col 0
        if(
$row==0) { 
            
$row++; continue; 
        } 
        
$cells    $temp->getElementsByTagName('Cell'); 

        foreach( 
$cells as $cell )  { 
             if(
$col==0$data1 $cell->nodeValue
             if(
$col==1$data2 $cell->nodeValue
             if(
$col==2$data3 $cell->nodeValue
             if(
$col==3$data4 $cell->nodeValue
             if(
$col==4$data5 $cell->nodeValue
             
$col++; 
        } 
 
//======End Get data from Excel======================//        

//==================Insert To DB ====================================//
$sql " INSERT INTO table_name (";
$sql .= " field_1, ";
$sql .= " field_2, ";
$sql .= " field_3, ";
$sql .= " field_4, ";
$sql .= " field_5 ";
$sql .= " ) VALUES ( ";
$sql .= " '$data1', ";
$sql .= " '$data2', ";
$sql .= " '$data3', ";
$sql .= " '$data4', ";
$sql .= " '$data5' ";
$sql .= " ) ";
mysql_query($sql) or die(mysql_error()); 
//==================End Insert To DB ====================================//
 
$row++;  
  } 

mysql_close();
สร้างไฟล์เสร็จหมดแล้ว ทีนี้ก็ถึงวิธีการ Import ก็ให้รันไฟล์ uploadExcel.php แล้วก็ Browse เลือกไฟล์ Excel ที่เตรียมใว้ แล้วคลิกปุ่ม Upload ก็เป็นการเสร็จพิธี..


ที่มา : http://bc46.com/forum/index.php?topic=97.0



excel to mysql
[ ความเห็นที่ 1]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันศุกร์ 6 พฤษภาคม 2554  10:31 น.
ขอบคุณมากๆ นะคะ กำลังต้องการพอดีเลย


โอเคเลย
[ ความเห็นที่ 2]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันจันทร์ 4 กรกฎาคม 2554  17:44 น.
 ขอบคุณมากค่ะ
vespa
[ ความเห็นที่ 3]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันศุกร์ 8 กรกฎาคม 2554  17:25 น.
พอรันแล้วมันขึ้น error ว่า
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in file:///C:/Windows/Temp/php4DB9.tmp, line: 1 in C:\AppServ\www\db\import.php on line 18

Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\AppServ\www\db\import.php on line 19


รบกวนช่วยด้วยค่ะ

บิว
[ ความเห็นที่ 4]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันจันทร์ 6 กุมภาพันธ์ 2555  12:34 น.
รันแร้วมัน error ขึ้นว่า 
Warning: DOMDocument::load() [function.DOMDocument-load]: Start tag expected, '<' not found in file:///C%3A/WINDOWS/TEMP/php94.tmp, line: 1 in C:\AppServ\www\123\import.php on line 18

Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\AppServ\www\123\import.php on line 19
 ไม่ทราบว่าเป็นเพราะอะไรอะค่ะ

ืnoona
[ ความเห็นที่ 5]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันพุธ 8 สิงหาคม 2555  08:53 น.
ลืมปิดคำสั่งของ php ใต้คำสั่ง sql ด้วย
mysql_close
();
?>



plern
[ ความเห็นที่ 6]
RE : การนำข้อมูลจากไฟล์ Excel Import เข้าสู่ฐานข้อมูล MySql
โพสต์เมื่อ: วันศุกร์ 2 พฤศจิกายน 2555  13:44 น.
จากความคิดเห็นที่ 4 ที่ว่า 
Warning: DOMDocument::load() [function.DOMDocument-load]: Start tag expected, '<' not found in file:///C%3A/WINDOWS/TEMP/php94.tmp, line: 1 in C:\AppServ\www\123\import.php on line 18

Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\AppServ\www\123\import.php on line 19



ให้เซฟไฟล์ Excel เป็น .xml ก่อนคะ



คุณต้องสมัครสมาชิก ถึงจะโพสกระทู้ได้

ปิดรับสมัครสมาชิกแล้ว


คำยอดฮิต :- 0