Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in file:///C:/WINDOWS/Temp/php7D.tmp, line: 1 in C:\AppServ\www\excel\import.php on line 18
Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\AppServ\www\excel\import.php on line 19
DOMDocument::load(); จากที่เข้าใจน่ะฟังก์ชันนี้เรียกไฟล์ประเภท xml น่ะ
Code
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in file:///C:/WINDOWS/Temp/php7D.tmp, line: 1 in C:\AppServ\www\excel\import.php on line 18
แล้วจาก error เนี่ย มันกำลังค้นหาจุดเริ่มต้น โดยเริ่มที่ < แต่ในไฟล์ที่อัฟไปมันไม่มีซึ่งปกติไฟล์ xml มันมี tag พวกนี้อยู่แล้ว Code
Fatal error: Call to a member function getElementsByTagName() on a non-object in C:\AppServ\www\excel\import.php on line 19
ผลจากการค้นหาจุดเริ่มต้นไม่เจอมันก็เลยหา member ไม่เจอไปด้วย
create table a(
id int(4) ,
name varchar(20),
age int(4),
primary key(id)
);
excel2mysql.php Code (PHP)
<?php
require_once 'Excel/reader.php';
$reader = new Spreadsheet_Excel_Reader();
$reader->setOutputEncoding("UTF-8");
$reader->read("test.xls");
for ($i = 2; $i <= $reader->sheets[0]["numRows"]; $i++)
{
$id =$reader->sheets[0]["cells"][$i][1];
$name=$reader->sheets[0]["cells"][$i][2];
$age=$reader->sheets[0]["cells"][$i][3];
mysql_query("insert into a (id,name,age) values('$id','$name','$age')") or die(mysql_error());
}
?>
อธิบาย
$i = 1 ตรงนี้เรารู้ว่ามันเริ่มที่แถวที่หนึ่ง คือ id name age แต่เราจะเริ่มแทรกข้อมูลที่แถวสอง $i จึงเริ่มต้นที่ 2
เรารู้ว่า id อยู่คอลัมน์ 1 name อยู่คอลัมน์2 และ age อยู่คอลัมน์3 เราก็เลยกำหนดไปเลยดังนี้
$id =$reader->sheets[0]["cells"][$i][1];
$name=$reader->sheets[0]["cells"][$i][2];
$age=$reader->sheets[0]["cells"][$i][3];
จากนั้นก็ query ข้อมูลที่ละแถวไปเรื่อยๆ
จะเห็นว่ามันไม่ยืดหยุ่นเท่าไรแต่ก็เป็นวิธีการแทรกลง mysql แบบง่ายๆครับ
คงเป็นประโยชน์ให้เอ๋ไปดัดแปลงกับฟังก์ชันของตัวเองได้น่ะครับ