Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderators: mindphp, ผู้ดูแลกระดาน

demonxiii
PHP Sr. Member
PHP Sr. Member
Posts: 54
Joined: 04/01/2009 7:54 pm

Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by demonxiii »

- - ถามอีกแล้ว อย่าพึ่งเบื่อกันน้อ

การ import แบบที่พอกด browse ไฟล์เสร็จ ก็กด OK

แล้วก็จะ Import ข้อมูลจากไฟล์ดังกล่าวเข้าฐานข้อมูล ทำยังไงหรอครับ

ป.ล.

แล้วหาก คีย์หลักซ้ำ จะมีผลอย่างไรครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25211
Joined: 22/09/2008 6:18 pm
Contact:

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by mindphp »

PK ซ้ำก็ insert แถวนั้นๆ ลงไปไม่ได้ครับ
แต่ก็มีวิธีเช็คว่า row ไหน insert ลงไปไม่ได้
ถ้า ใช้ InoDB ก็ทำ traction ได้ ว่าจะเอา หรือไม่เอาทั้งหมด ก็ได้

วิธี คือ อ่านไฟล์ .csv ออกมา ทีละบันทัด แล้ว แยกข้อความออกมาด้วย เครื่องหมาย ","
แล้วเอาค่าที่แยกได้ สร้างเป็นคำสั่ง sql ที่ใช้ในการ insert
แล้ว รันคำสั่ง sql ที่ได้มานั้น :-D

ถามได้ครับไม่เบื่อครับ ตอบบ้าง ถามบ้าง ดีครับช่วยๆกันไป :-D
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

demonxiii
PHP Sr. Member
PHP Sr. Member
Posts: 54
Joined: 04/01/2009 7:54 pm

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by demonxiii »

แล้วการ Browse เนี่ย ทำไงหรอครับ

แบบกดเลือกไฟล์อะครับ

เหมือนเวลาเรา Import เข้า MYSQL อะครับ ที่กด Browse ไฟล์แล้วกด GO

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25211
Joined: 22/09/2008 6:18 pm
Contact:

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by mindphp »

ทำให้ Browse ไฟล์ คือเราต้องทำ form ใส่ file field ลงไป
เหมือน ทำ upload ไฟล์ ปกติครับ
แต่พออัพโหลด แล้วให้ทำตาม คำแนะนำข้างบน
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

demonxiii
PHP Sr. Member
PHP Sr. Member
Posts: 54
Joined: 04/01/2009 7:54 pm

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by demonxiii »

ถามเพิ่มครับ

ถ้าการ Import โดยไม่ใช้คำสั่ง getcsv มีคำสั่งไหนเอามาใช้ได้ครับ

พอดีผมยังแยกแบบที่คุณว่าไม่เป็นอะ

เพราะคำสั่ง getcsv มันรับภาษาไทยที่เป็น utf 8 ไม่ได้ มีคำสั่งอื่นไมครับ ? หรือวิธีอื่น ?

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25211
Joined: 22/09/2008 6:18 pm
Contact:

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by mindphp »

มองมันเป็น text file ธรรมดา ครับ
แล้วใช้ function explode() แยกแต่ละ field ของแต่ละบรรทัดเอาครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

demonxiii
PHP Sr. Member
PHP Sr. Member
Posts: 54
Joined: 04/01/2009 7:54 pm

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by demonxiii »

Code: Select all

	$host = 'localhost'; //sql208.thport.com
	$user = 'root';  //'197030'; //thpor_2957156
	$pass = 'ekachai';
	$dbname = 'his'; //'197030'; // thpor_2957156_his
	$conn = mysql_connect("$host","$user","$pass");
	mysql_select_db("$dbname",$conn);
	mysql_query("SET NAMES UTF8",$conn);


if ($Uploaded_File != "") // ตรวจสอบว่ามีไฟล์ส่งมาหรือไม่ 
{
	if(strchr($Uploaded_File_name,".")==".csv") //เช็คนามสกุล
	{
		copy($Uploaded_File,"file/".$Uploaded_File_name); // Copy File ไว้ที่ Folder File
		$FILE = fopen( "file/".$Uploaded_File_name, "r");
		$i=1;
		while (!feof($FILE))
		{
		$READ = fgets($FILE,2048);
		$DATA = explode(',',$READ);
		if ($i>1) //ไม่อ่านแถวแรกสุด เพราะแถวแรกสุดคือ หัวฟิลล์
			{
			echo $DATA[0]." "; //ส่วนนี้ผมไว้ดูเฉยๆ ว่ามีแถวอะไรบ้าง
			echo $DATA[1]." ";
			echo $DATA[2]."<br>";
			mysql_query("INSERT INTO icd_10 (ICD,Detail_En,Detail_Th) VALUES ($DATA[0],$DATA[1],$DATA[2])");
			}
		$i=$i+1;
		}
	}
	else
	{
		echo "file is not .csv"; 
	}
}
อันนี้คือที่ลองพยายามทำขึ้นมาครับ

ปัญหาที่เจอคือเวลาเอาไฟล์ที่ export มาแก้ด้วย excel แล้วใส่ไปใหม่พบว่า ภาษาไทยใช้ไม่ได้
แล้วก็เพี้ยนค่าครับ

แต่หากแค่เป็นการ BACKUP ละก็ไม่มีปัญหา สามารถใช้ได้ปรกติ แต่ หากเป็นการเพิ่มเติมเข้าไป โดยมีการซ้ำ มันจะหยุดทำการเพิ่มทันทีนะสิครับ

อยากรู้เพิ่มเติมหน่อยครับ ว่ามีคำสั่งไรมาแก้ไขพวกนี้ได้บ้าง

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 25211
Joined: 22/09/2008 6:18 pm
Contact:

Re: Import CSV โดยการ Browse ไฟล์ทำยังไงครับ

Post by mindphp »

ลองเช็คคำสั่ง sql นี้ครับ
INSERT INTO icd_10 (ICD,Detail_En,Detail_Th) VALUES ($DATA[0],$DATA[1],$DATA[2])
ตรง Values ถ้าค่าเป็น text ต้องอยู่ใน เครื่อง หมาย 'yyyyy'
ส่วนเรื่อง ถ้า PK ซ้ำกันจะ insert แต่ละครั้งไม่ได้ ไม่ได้ทำให้ ออกจาก loop
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

Post Reply

Return to “Programming - PHP”

Who is online

Users browsing this forum: No registered users and 24 guests