โปรแกรม Import ข้อมูล Excel(CSV) ลงฐานข้อมูล
โปรแกรมนี้ช่วยแก้ปัญหาในการ Import ข้อมูล จาก PHP4 ไปยัง PHP5 แล้วไม่เป็นภาษาไทยได้เป็นอย่างดีครับ โดยมันสามารถ Import ได้ทั้ง TIS-620 และ UTF-8 ทั้งบน PHP4 และ PHP5(ที่มักมีปัญหาในการ Import เมื่อทำการเปลี่ยน Appserver)
ตัวอย่างข้อมูลไฟล์ CSV ที่โปรแกรมนี้รองรับจะเป็นฟอร์แม็ตนี้เท่านั้น
header1,header2,header3
data1,data.2,data3
บรรทัดแรก header1-3 จะเป็นชื่อฟิลด์ของฐานข้อมูล คั่นแต่ละฟิลด์ด้วย ลูกน้ำ(,)
บรรทัดถัดมาจะเป็นแถวของข้อมูลต่างๆ โดยคั่นแต่ละฟิลด์ด้วย ลูกน้ำ(,) เช่นกัน และต้องมีจำนวนข้อมูลเท่ากับแถวแรก
ไฟล์นี้สามารถ export ออกมาจาก phpMyAdmin ได้โดยการเลือก Export เป็นชนิด CSV โดยต้องมีการปรับฟอร์แมตให้เข้ากับโปรแกรมนี้
สำหรับไฟล์ CSV ที่มีอยู่หากต้องการใช้เป็น UTF-8 ให้ทำการ Convert ให้เป็น UTF-8 ก่อนนะครับ (เช่นเดียวกัน ถ้าเป็น TIS-620 ให้ Convert ให้เป็น Ansi)
<?php
//tool สำหรับ import ข้อมูล
//ข้อมูลอยู่ในรูปไฟล์ Text นามสกุล .CSV(excel) สมารถ export จาก MySQL ออกมาได้
//software นี้ยังไม่รองรับข้อมูลชนิด BLOB
//รูปแบบของข้อมูลประกอบด้วย
//ข้อมูลแบ่งออกเป็นแถว แถวละ 1 ข้อมูล
//ใน 1 แถวจะประกอบด้วยข้อมูล field ต่างๆ คั่นแต่ละ field ด้วย comma
//ข้อมูลบรรทัดแรกสุด จะต้องเป็น ข้อมูลที่บอกชื่อฟิลด์
//บรรทัดอื่นๆจะประกอบด้วยข้อมูลต่างๆ โดยต้องมีจำนวนฟิลด์ถูกต้องตรงกัน กับในบรรทัดแรก
//ตัวอย่าง
//บรรทัดแรก field1,field2,field3
(
หมายถึงขึ้นบรรทัดใหม่)
//บรรทัดถัดมาทั้งหมด data1,data2,data3
//ไปเรื่อยๆจนจบ
$charset = ( isset( $_POST[charset] ) ) ? $_POST[charset] : 0;
$fileupload = $_FILES[fileupload];
$host = ( isset( $_POST[host] ) ) ? $_POST[host] : "localhost";
$username = ( isset( $_POST[username] ) ) ? $_POST[username] : "root";
$password = ( isset( $_POST[password] ) ) ? $_POST[password] : "1234";
$dbname = ( isset( $_POST[dbname] ) ) ? $_POST[dbname] : "test";
$tablename = ( isset( $_POST[tablename] ) ) ? $_POST[tablename] : "test";
?>
<html>
<head>
<title>MySQL data Importer (.CSV)</title>
<meta http-equiv="Content-Type" content="text/html; charset=<?=($charset == 2)?'UTF-8':'TIS-620';?>" />
<style type="text/css">
* {
margin:0;
padding:0;
font-family:Tahoma,"MS Sans Serif";
font-size:100%;
}
body {
font-size:10pt;
}
table {
margin:0 auto;
float:none;
margin-top:50px;
}
form {
border:1px solid #cc6633;
background-color:#fffbf0;
width:500px;
display:table;
}
p {
margin-bottom:5px;
}
p.head {
text-align:center;
font-weight:bold;
background-color:#ffcc99;
border-bottom:1px solid #cc6633;
padding:3px;
}
p.submit {
background-color:#f1f1f1;
padding:3px 0;
margin:0;
border-top:1px solid #cc6633;
}
input,select {
margin-left:5px;
}
option {
padding:1px 2px;
}
label {
width:110px;
text-align:right;
float:left;
}
input#submit {
margin-left:115px;
}
.error {
color: red;
}
.success {
color: green;
}
</style>
</head>
<body>
<?
if ( $fileupload[tmp_name] != '' )
{
//เชื่อมต่อกับ database
$dbconnection = mysql_connect( $host , $username , $password );
if ( $dbconnection )
{
if ( $charset == 1 )
{
mysql_query( "SET NAMES 'tis620';" );
};
$db = mysql_select_db( $dbname );
};
if ( !$dbconnection || !$db ) //ไม่สามารถเชื่อมต่อได้
{
echo '<br /><br /><p class="error">ข้อผิดพลาดของฐานข้อมูล! : <font style="font-weight:bold">'.mysql_error()."</font></p>
";
};
$datas = file( $fileupload[tmp_name] );
$count = count( $datas );
//ชื่อฟิลด์
$fields = explode( ',' , trim( $datas[0] ) );
$sql1 = "INSERT INTO `$_POST[tablename]` (`";
$sql1 .= implode ( '`,`' , $fields );
$sql1 .= "`)";
//ข้อมูล
for ( $i = 1 ; $i < $count ; $i++ )
{
$data = trim( $datas[$i] );
if ( $data != "" )
{
$fields = explode( ',' , $data );
$sql2 = "VALUES ('";
$sql2 .= implode ( "','" , $fields );
$sql2 .= "');";
echo $sql1.$sql2."<br />";
mysql_query( $sql1.$sql2 ); //Insert
};
};
if ( mysql_error() ) //มี error
{
echo '<br /><br /><p>Import Error! : <font class="error" style="font-weight:bold">'.mysql_error()."</font></p>
";
}
else
{
echo "<br /><br /><p class=\"success\">Import success.</font></p>
";
};
mysql_close();
};
?>
<table align="center" cellpadding="0" cellspacing="0"><tr><td>
<form action="import.php" method="post" enctype="multipart/form-data">
<p class="head">Import File</p>
<p><label for="charset">Charset :</label>
<select name="charset">
<option value="0">TIS-620</option>
<option value="1">TIS-620(PHP5)</option>
<option value="2">UTF-8</option>
</select>
</p>
<p><label for="host">Host name :</label><input type="text" name="host" id="host" size="45" value="<?=$host?>" /></p>
<p><label for="username">User name :</label><input type="text" name="username" id="username" size="45" value="<?=$username?>" /></p>
<p><label for="password">Password :</label><input type="text" name="password" id="password" size="45" value="<?=$password?>" /></p>
<p><label for="dbname">Database name :</label><input type="text" name="dbname" id="dbname" size="45" value="<?=$dbname?>" /></p>
<p><label for="tablename">Table name :</label><input type="text" name="tablename" id="tablename" size="45" value="<?=$tablename?>" /></p>
<p><label for="fileupload">Browser :</label><input type="file" name="fileupload" id="fileupload" size="45" /></p>
<p class="submit"><input type="submit" name="submit" id="submit" class="button" value="Go." /></p>
</form>
</td></tr></table>
</body>
</html>
ตัวอย่างข้อมูลไฟล์ CSV ที่โปรแกรมนี้รองรับจะเป็นฟอร์แม็ตนี้เท่านั้น
header1,header2,header3
data1,data.2,data3
บรรทัดแรก header1-3 จะเป็นชื่อฟิลด์ของฐานข้อมูล คั่นแต่ละฟิลด์ด้วย ลูกน้ำ(,)
บรรทัดถัดมาจะเป็นแถวของข้อมูลต่างๆ โดยคั่นแต่ละฟิลด์ด้วย ลูกน้ำ(,) เช่นกัน และต้องมีจำนวนข้อมูลเท่ากับแถวแรก
ไฟล์นี้สามารถ export ออกมาจาก phpMyAdmin ได้โดยการเลือก Export เป็นชนิด CSV โดยต้องมีการปรับฟอร์แมตให้เข้ากับโปรแกรมนี้
สำหรับไฟล์ CSV ที่มีอยู่หากต้องการใช้เป็น UTF-8 ให้ทำการ Convert ให้เป็น UTF-8 ก่อนนะครับ (เช่นเดียวกัน ถ้าเป็น TIS-620 ให้ Convert ให้เป็น Ansi)