Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > import file.csv แล้วข้อมูลมันกระเถิบไปเป็น record ใหม่ค่ะ งง มา 3 วันแล้ว ช่วยตอบด้วยนะคะ T-T



 

import file.csv แล้วข้อมูลมันกระเถิบไปเป็น record ใหม่ค่ะ งง มา 3 วันแล้ว ช่วยตอบด้วยนะคะ T-T

 



Topic : 056848

Guest




หวัดดีค่ะพี่ๆ ทุกคน คือน้องจะ import file excel.csv ใส่ลงใน DB MySQL ค่ะ ข้อมูลในแต่ละ field ประมาณ len 200 ได้ค่ะ ทีเป็นปัญหาคือพอน้องใช้ code import.php แล้วมัน add ให้ แต่ข้อมูลของท้ายๆ ดันตกลงไปเป็น record ใหม่ ซะงั้น .. ลองเปลี่ยน type จาก text จนถึง longtext แล้วผลก็เหมือนเดิมค่ะ พี่ๆ ช่วยดูให้หน่อยสิคะ ว่าเป็นเพราะอะไร ดูตาม file แนบนะคะ

รูปตัวอย่างที่มีปัญหาเรื่องข้อมูลตกลงไปอีก record
ข้อมูล field ใน TB
Code import.php

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



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2011-03-04 11:24:46 By : น้อง View : 7702 Reply : 19
 

 

No. 1



โพสกระทู้ ( 215 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ขอดูไฟล์ Excel นามสกุล CSv หน่อยคับ






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 14:11:37 By : compeng
 


 

No. 2



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


ผมไม่ทราบว่าเป็นทุกไฟล์หรือเปล่า หรือเป็นแค่บางไฟล์ครับ แต่ผมอยากให้คุณลองเปลี่ยนวิธีการอ่านไฟล์ CSV จากฟังชันก์ของ PHP มาเป็นตัว PHPExcel ผมว่าน่าจะแหล่มกว่า(โดยส่วนตัวผมว่างั้นอะ) ดาวน์โหลดได้จากตรงนี้
http://phpexcel.codeplex.com/
ความสามารถหลักของมัน(เท่าที่ผมเคยลองนะและอ่านคร่าว)

1.สร้างและอ่านไฟล์ *.xls, *.xlsx
2.สร้างไฟล์ PDF
3.สร้าง และอ่าน CSV

ไม่รู้ว่าเคยใช้หรือเปล่าครับ ลองดูโค้ดง่ายดูนะ
Code (PHP)
	require_once '../lib/PHPExcel.php';// include เข้ามาก่อน		
	
	// Read CSV
	$objReader = new PHPExcel_Reader_CSV();// สร้าง object ของ Class PHPExcel_Reader_CSV 
	$objReader->setInputEncoding('CP1252');// กำหนดค่าต่างตามนี้
	$objReader->setDelimiter(',');
	$objReader->setEnclosure('');
	$objReader->setLineEnding("\r\n");
	$objReader->setSheetIndex(0);
	$objPHPExcel = $objReader->load("file_csv.csv");	//<====File Path
	$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);

	$strSql = "INSERT INTO tb_name(field1,field2) VALUES "; //<======= SQL
                //วนลูบดึงข้อมูลมาสร้างคำสั่ง SQL แต่ยังไม่คิวรี่นะ
	for($i=2; $i<=$objWorksheet->getHighestRow(); $i++){// $i=2 คือให้เริ่มอ่านข้อมูลจากไฟล์บรรทัดที่2 บรรทัดแรกเป็นหัวคอลัมน์ครับ
		$strSql  .= "('".$objWorksheet->getCell('A'.$i)->getValue()."',";
		$strSql  .= "'".$objWorksheet->getCell('B'.$i)->getValue()."'),";
	}
	$strSql = substr($temp_sql,0,strlen($temp_sql)-1);// ตัดเครื่องหมาย , ออก
	$objPHPExcel->disconnectWorksheets();
                
                 // มาคิวรี่ตรงนี้ทีเดียวเลยครับ
                 // connect Database ให้เรียบร้อยแล้วคิวรี่ซะ
                 mysql_query($strSql)or die(mysql_error());


ลองแกะโค้ดดูนะครับ ไม่ยากหรอกครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 14:21:01 By : naskw
 

 

No. 3

Guest


@King_R_Ther
ให้มาเป็นภาพตัวอย่างนะคะ ถ้าอยากได้แบบไฟล์ .csv เลย รบกวนบอกมาอีกทีค่ะ ^^
ภาพตัวอย่าง file.csv

@anu
ขอบคุณค่ะ เดี๋ยวจะลองดูก่อน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 14:47:13 By : น้อง
 


 

No. 4



โพสกระทู้ ( 532 )
บทความ ( 1 )



สถานะออฟไลน์


ขอดูไฟล์ csv ในที่เปิด notepage หน่อยครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:00:51 By : tingtongkub
 


 

No. 5

Guest


@tong
copy ข้อความมาเลยแล้วกันนะคะ ^^ ที่เห็นด้านล่างจะมีข้อมูลถึงรหัส (id) ที่ 4 ถ้าดูตามภาพด้านบนคือรหัสแรกที่มีปัญหาค่ะ (รหัส 2 ข้อมูลปกติ เริ่มเพี้ยนตั้งแต่รหัส 4 ลงมาเรื่อยๆ ค่ะ
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
id,product,chemical,advantage,che_no,cas_no,imdg_no,risk_phy,risk_health,risk_env,status,color,smell,ph,boiling,melting,freezing,dangr,breathes,alimentary,eye,skin,body,tool1,tool2,tool3,tool4,tool5,tool6,tool7,tool8,heal_smell,healtouch,heal_eye,heal_eat,move,careful,protect,absorb,fire_off,careful_spe,abandon,destroy
2,Barium sulfate,Barium sulfate,ใช้ในการตรวจวินิจฉัย รักษา,10,7727-43-7,1564,5,2,0,ผงของแข็ง,ขาวหรือเหลือง,ไม่มีกลิ่น,10,-,1580,-,,เป็นอันตรายต่อทางเดินหายใจ,เป็นอันตรายต่อทางเดินอาหาร,ก่อให้เกิดการระคายเคือง,ก่อให้เกิดการระคายเคือง,สัมผัสเป็นเวลานานเกิดโรคปอดจากฝุ่นแบเรียม,,2,,4,5,,,,ให้เคลื่อนย้ายผู้ป่วยออกสู่บริเวณที่มีอากาศบริสุทธิ์ นำส่งแพทย์,ฉีดล้างด้วยน้ำปริมาณมากอย่างน้อย 15 นาที,ฉีดล้างตาทันทีด้วยน้ำปริมาณมากอย่างน้อย 15 นาที นำส่งแพทย์,ถ้าผู้ป่วยมีสติให้ดื่มน้ำหรือนม 2-4 แก้ว แล้วนำส่งแพทย์,เก็บในที่แห้งและเย็น มีการระบายอากาศที่ดี,สวมอุปกรณ์ป้องกันอันตราส่วนบุคคล หลีกเลี่ยงการทำให้เกิดฝุ่น เก็บส่วนที่หกรั่วไหลในภาชนะที่ปิดมิดชิด,ล้างบริเวณหกรัวไหลด้วยน้ำปริมาณมาก ๆ,-,ถังดับเพลิง สายน้ำดับเพลิง,กรณีเกิดไฟไหม้ สวมอุปกรณ์ช่วยหายใจชนิด SCBA ชุดป้องกันสารเคมี,ตามระบบการจัดการของเสียอันตราย,ตามกฎระเบียบที่ราชการกำหนด
4,Sulfuric acid,Sulfuric acid,ใช้ในการเตรียมสารทางห้องปฏิบัติการ,81,7664-93-9,1830,6,4,0,ของเหลว,ไม่มีสี,ไม่มีกลิ่น,-,276,-,-1 ถึง -30,มีฤทธิ์กัดกร่อน,ก่อให้เกิดการระคายเคืองต่อระบบทางเดินหายใจ ทำให้มีอาการน้ำท่วมปอด เจ็บคอ ไอ หายใจติดขัด และหารยใจถี่รัว การหายใจเอาสารที่ความเข้มข้นสูงอาจทำให้เสียชีวิตได้,ทำให้คลื่นไส้ อาเจียน แต่ไม่มีผลต่อเนื้อเยื่อ,ทำให้ตาแดง ปวดตา และสายตาพร่ามัว,ทำให้เป็นแผลไหม้ และปวดแสบปวดร้อน,มีผลทำลายฟัน ระบบหลอดเลือดเลี้ยงหัวใจ,,2,,4,5,6,,,ให้เคลื่อนย้ายผู้ป่วยออกสู่บริเวณที่มีอากาศบริสุทธิ์ ถ้าผู้ป่วยหยุดหายใจให้ช่วยผายปอด หายใจติดขัดให้ออกซิเจนช่วย รักษาร่างกายผู้ป่วยให้อบอุ่นและอยู่นิ่ง นำส่งไปพบแพทย์,ให้ฉีดล้างผิวหนังทันทีด้วยน้ำปริมาณมากอย่างน้อย 15 นาที นำส่งไปพบแพทย์,ให้ฉีดล้างตาทันทีด้วยน้ำปริมาณมากอย่างน้อย 15 นาที นำส่งไปพบแพทย์,อย่ากระตุ้นให้เกิดการอาเจียน ให้ผู้ป่วยบ้วนล้างปากด้วยน้ำ ให้ผู้ป่วยดื่มน้ำ 200-300 มิลลิลิตร นำส่งไปพบแพทย์,เก็บในภาชนะบรรจุที่ปิดมิดชิด เย็นและแห้ง มีการระบายอากาศเพียงพอ และห่างจากแสง ไอน้ำ เบสแก่,สวมใส่อุปกรณ์ป้องกันอันตรายที่เหมาะสม จัดเก็บโดยใช้อุปกรณ์ใน Spill kit box,ป้องกันไม่ให้สารเคมีที่หกรั่วไหล ไหลลงสู่ท่อระบายน้ำ แม่น้ำ และแหล่งอื่นๆ,สารอัลคาไลด์ เช่น โซดาแอ๊ซ สารอนินทรีย์ หรือดิน,ใช้คาร์บอนไดแกไซด์ ผงเคมีแห้ง น้ำ,อาจทำให้เกิดเพลิงไหม้และการระเบิดได้,รวบรวมใส่ภาชนะบรรจุที่ปิดมิดชิดเพื่อนำไปกำจัด,ให้เป็นไปตามกฎระเบียบที่ทางราชการกำหนด
- - - - - - - - - - - - - - -
ขอบคุณค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:07:48 By : น้อง
 


 

No. 6



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


ผมว่าน่าจะเกิดจากการที่ length ของข้อมูลบรรทัดที่มันเด้งไปอีก record มันยาวเกินกว่าที่คุณกำหนดในฟังชั่นก์ fgetcsv($FILE,ตรงนี้)หรือเปล่า
แนะนำเพิ่มเติมนะครับ ช่วงบรรทัดที่ 14- 20 อันนนี้เอาไปไว้ข้างนอก loop จะดีกว่าผมว่า คงไม่ต้อง connect database ทุกรอบนะครับ รอบเดียวก็พอ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:15:49 By : naskw
 


 

No. 7

Guest


@anu
run แล้วเป็นแบบนี้ค่ะ
Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 768 bytes) in C:\AppServ\www\msds\lib\Classes\PHPExcel\Cell.php on line 964- - - - - - -
tb_msds.csv : 251 KB
tb_msds.xls : 356 KB
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:19:03 By : น้อง
 


 

No. 8



โพสกระทู้ ( 532 )
บทความ ( 1 )



สถานะออฟไลน์


ปกติถ้าเราไม่ทราบจำนวนข้อมูลที่จะเก็บผมจะใช้เป็น text แทน vachar ครับ แล้ว ก็ เวลา export ผมว่าน่าจะใช้ " ด้วยนะครับ เช่น
ลำดับที่ ชื่อ วดป
"1","นายสมชาย","10/12/2500"

ลองดูในนี้

https://www.thaicreate.com/php/php-convert-csv-to-mysql.html
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:23:24 By : tingtongkub
 


 

No. 9



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


ขอดูโค้ดหน่อยครับ ขอข้อมูลในไฟล์ csv ทั้งไฟล์เลยนะโพสขึ้นเว็บเลยเหมือนโพสใน No.5 เดี่ยวดูให้ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:25:34 By : naskw
 


 

No. 10

Guest


// Remove bymr.win
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:41:36 By : น้อง
 


 

No. 11



โพสกระทู้ ( 532 )
บทความ ( 1 )



สถานะออฟไลน์


ลองเอาอันนี้ไป แล้วลองแก้ดูครับ

upload.php << ไว้ browse file
Code (PHP)
<form name="form1" method="post" action="import_files.php" enctype="multipart/form-data" >
  <input type="file" name="uploadedfile">
  <input type="submit" name="Submit" value="Submit">
</form>






import_files.php << ไว้ upload และ import
Code (PHP)
<?
$uploadedfile=$HTTP_POST_FILES["uploadedfile"]["tmp_name"];
$uploadedfilename=$HTTP_POST_FILES["uploadedfile"]["name"];
$uploadedfiletype=$HTTP_POST_FILES["uploadedfile"]["type"];
$uploadedfilesize=$HTTP_POST_FILES["uploadedfile"]["size"];
echo "$uploadedfilename";

 $host = 'localhost'; 
   $user = 'root';  
   $pass = '123456';
   $dbname = 'mydatabase_test'; 
   $conn = mysql_connect("$host","$user","$pass");
   mysql_select_db("$dbname",$conn);
   mysql_query("SET NAMES UTF8",$conn);


if ($uploadedfile != "") // ตรวจสอบว่ามีไฟล์ส่งมาหรือไม่ 
{
   if(strchr($uploadedfilename,".")==".csv") //เช็คนามสกุล
   {
      copy($uploadedfile,"file/".$uploadedfilename); // Copy File ไว้ที่ Folder File
      $FILE = fopen( "file/".$uploadedfilename, "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 user(id,name,email) VALUES ($DATA[0],$DATA[1],$DATA[2])");
         }
      $i++;
      }
   }
   else
   {
      echo "file is not .csv"; 
   }
}


?>
</table>
</body>
</html>




ประวัติการแก้ไข
2011-03-04 15:55:50
2011-03-04 15:55:57
2011-03-04 15:56:01
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 15:54:50 By : tingtongkub
 


 

No. 12



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


ผมลองอ่านทั้งไฟล์ขึ้นมาไม่มี Error นะครับ
แต่คุณต้องแก้ตรงคอมเมนต์ (1) ให้ใส่ชื่อฟิลด์ที่ต้องการจะ INSERT ซะ
สุดท้ายจะได้คำสั่ง SQL เก็บในตัวแปร $strSQL ลองเอาไปรันดูได้ปะ

Code (PHP)
<?php
require("lib/PHPExcel.php");
$objReader = new PHPExcel_Reader_CSV();// สร้าง object ของ Class PHPExcel_Reader_CSV 
$objReader->setInputEncoding('CP1252');// กำหนดค่าต่างตามนี้
$objReader->setDelimiter(',');
$objReader->setEnclosure('');
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0);
$objPHPExcel = $objReader->load("testcsv.csv");	//<====File Path
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);

$strSql = "INSERT INTO tb_name(field1,field2) VALUES "; //<======= (1)
//วนลูบดึงข้อมูลมาสร้างคำสั่ง SQL แต่ยังไม่คิวรี่นะ
for($i=2; $i<=$objWorksheet->getHighestRow(); $i++){// $i=2 คือให้เริ่มอ่านข้อมูลจากไฟล์บรรทัดที่2 บรรทัดแรกเป็นหัวคอลัมน์ครับ
  $strSql  .= "('".$objWorksheet->getCell('A'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('B'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('C'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('D'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('E'.$i)->getValue()."',";  
  $strSql  .= "('".$objWorksheet->getCell('F'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('G'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('H'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('I'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('J'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('K'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('L'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('M'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('N'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('O'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('P'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('Q'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('R'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('S'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('T'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('U'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('V'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('W'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('X'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('Y'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('Z'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AA'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AB'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AC'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AD'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AE'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AF'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AG'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AH'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AI'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AJ'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AK'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AL'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AM'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AN'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AO'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('AP'.$i)->getValue()."',";        
  $strSql  .= "'".$objWorksheet->getCell('AQ'.$i)->getValue()."'),";
  
}
$strSql = substr($strSql,0,strlen($strSql)-1);// ตัดเครื่องหมาย , ออก 
$objPHPExcel->disconnectWorksheets();
?>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 16:01:48 By : naskw
 


 

No. 13



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


ขอแก้ไขเพิ่มเติมนะครับ อิๆ ตรงนี้ลองแก้เป็น UTF-8
$objReader->setInputEncoding('UTF-8');//

แล้วก็ไฟล์ CSV ให้เปิดด้วย Editplus แล้ว save as กำหนด ให้เป็น utf8 ด้วยภาษาไทยจะได้ไม่เพี้ยน
Save as CSV

ติดตรงไหนถามมาได้เลยครับ ถ้าช่วยได้จะช่วย วันนี้ผมทำงานยาวเลย น่าจะเที่ยงคืนถึงจะกลับ *-*


ประวัติการแก้ไข
2011-03-04 16:28:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 16:15:52 By : naskw
 


 

No. 14

Guest


@tong
ขอบคุณค่ะ ตอนนี้กำลังลองทำอยู่ ติดปัญหานิดหน่อย ที่มันไม่ยอมลง DB (มีแค่รหัสที่รันตั้งแต่ 1-จำนวน record จริงของ file.csv) แต่คิดว่าอ่าน file ได้นะคะเพราะ echo ออกมาถูกแล้ว จะลอง check code ดูใหม่ค่ะ

@anu
เอ่อ ยังไงดีล่ะ ถ้ากำหนด path ตรงคำสั่ง require เหมือนที่บอกมามันจะ error ตามภาพเนี้ยค่ะ -*-
Error

ซึ่งน้องลองเปลี่ยน path ตามที่ file PHPExcel.php อยู่จริงๆ
path

ปรากฏว่ามัน Error เหมือนที่เคยบอก (สรุปคือมัน Error อยู่ดี เฮ้อ เซ็งตัวเอง คุณ@anu ทำไม่ error แต่ทำไมน้องทำแล้ว error หว่า)
ภาพerror2
- - - - - - - - - -
อันนี้คือ code ที่แก้ไขจากคุณ @anu ค่ะ
Code (PHP)
<?php
require("lib/PHPExcel.php");
$objReader = new PHPExcel_Reader_CSV();// สร้าง object ของ Class PHPExcel_Reader_CSV 
$objReader->setInputEncoding('CP1252');// กำหนดค่าต่างตามนี้
$objReader->setDelimiter(',');
$objReader->setEnclosure('');
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0);
$objReader->setInputEncoding('UTF-8');//
$objPHPExcel = $objReader->load("tb_msds.csv");	//<====File Path
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);

$strSql = "INSERT INTO tb_msds (id,product,chemical,advantage,che_no,cas_no,imdg_no,risk_phy,risk_health,risk_env,status,color,smell,ph,boiling,melting,freezing,dangr,breathes,alimentary,eye,skin,body,tool1,tool2,tool3,tool4,tool5,tool6,tool7,tool8,heal_smell,heal_touch,heal_eye,heal_eat,move,careful,protect,absorb,fire_off,careful_spe,abandon,destroy) VALUES('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]','$data[10]','$data[11]','$data[12]','$data[13]','$data[14]','$data[15]','$data[16]','$data[17]','$data[18]','$data[19]','$data[20]','$data[21]','$data[22]','$data[23]','$data[24]','$data[25]','$data[26]','$data[27]','$data[28]','$data[29]','$data[30]','$data[31]','$data[32]','$data[33]','$data[34]','$data[35]','$data[36]','$data[37]','$data[38]','$data[39]','$data[40]','$data[41]','$data[42]')"; //<======= (1)
//วนลูบดึงข้อมูลมาสร้างคำสั่ง SQL แต่ยังไม่คิวรี่นะ
for($i=2; $i<=$objWorksheet->getHighestRow(); $i++){// $i=2 คือให้เริ่มอ่านข้อมูลจากไฟล์บรรทัดที่2 บรรทัดแรกเป็นหัวคอลัมน์ครับ
  $strSql  .= "('".$objWorksheet->getCell('id'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('product'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('chemical'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('advantage'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('che_no'.$i)->getValue()."',";  
  $strSql  .= "('".$objWorksheet->getCell('cas_no'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('imdg_no'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('risk_phy'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('risk_health'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('risk_env'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('status'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('color'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('smell'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('ph'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('boiling'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('melting'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('freezing'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('dangr'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('breathes'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('alimentary'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('eye'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('skin'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('body'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool1'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool2'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool3'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool4'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool5'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool6'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('tool7'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('ool8'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('heal_smell'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('healtouch'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('heal_eye'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('heal_eat'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('move'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('careful'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('protect'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('absorb'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('fire_off'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('careful_spe'.$i)->getValue()."',";
  $strSql  .= "('".$objWorksheet->getCell('abandon'.$i)->getValue()."',";        
  $strSql  .= "'".$objWorksheet->getCell('destroy'.$i)->getValue()."'),";
  
}
$strSql = substr($strSql,0,strlen($strSql)-1);// ตัดเครื่องหมาย , ออก 
$objPHPExcel->disconnectWorksheets();
?>

- - - - - - - - - - - - - - - - - - -
อ้อ รบกวนอีกอย่างค่ะ คือ post 10 มันเยอะมาก เครื่องพาลจะค้าง อยากลบออกแต่เข้าใจว่า ไม่ใช่สมาชิกจึงไม่สามารถแก้ไขได้ มีวิธีการไหนที่สามารถลบออกได้บ้างใหมคะ (ปัญหาเก่ายังแก้ไม่ได้ ขอคำถามใหม่ซะแล้ว ^^)

ขอบคุณทุกท่านที่กรุณาช่วยค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 17:06:48 By : น้อง
 


 

No. 15



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


โค้ดหน้านี้ของคุณอยู่ folder ไหน
ถ้าอยู่ที่ www ให้ include ดังนี้
Code (PHP)
require("msds/lib/Classes/PHPExcel.php");

แปปไปหาไรกินก่อนเด๋วมาต่อ

มาละ ถ้าอยู่ที่ msds
Code (PHP)
require("lib/Classes/PHPExcel.php");


ส่วน error Allowed memory เอาไว้ก่อนเอานี่ให้ผ่านก่อน


ประวัติการแก้ไข
2011-03-04 17:30:24
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 17:23:24 By : naskw
 


 

No. 16



โพสกระทู้ ( 768 )
บทความ ( 0 )



สถานะออฟไลน์


error Allowed memory ......
น่าจะเกิดจาก Memory ไม่พอที่จะใช้รันสคริบ และเก็บข้อมูลขณะรันต้องไปแก้ไขในไฟล์ php.ini ที่ folder Windows
1.ไปที่ปุ่ม Start->Run พิมพ์ php.ini กด Enter
2.Find หาคำว่า memory_limit แล้วเพิ่มค่าตัวเลขให้มากกว่าเดิมลองดู
3.Save File
4.Restart Apache ไปที่ Start->Run พิมพ์ Services.msc กด Enter
5.เลือก Service ที่ชือว่า Apache2.2 แล้วกดปุ่ม Restart ซะ
6.แล้วลองรัน สคริบดูใหม่ ถ้าไม่ได้ลองเพิ่ม memory limit ขึ้นไปอีก ทำเหมืนอเดิมอะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 18:07:23 By : naskw
 


 

No. 17



โพสกระทู้ ( 532 )
บทความ ( 1 )



สถานะออฟไลน์


wด้ไม่ได้ยังไงบอกด้วยนะครับ จะได้ ช่วยดูไห้อีกที
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-03-04 21:47:35 By : tingtongkub
 


 

No. 18

Guest


รบกวนช่วยดูโค้ดให้หน่อยค่ะ พอดีใช้ PHPExcel ตามที่แนะนำแล้วนะคะ แต่เมื่อทำการรันแล้วปรากฏว่ามัน Error นะคะ รายละเอียดตามนี้
และจะเช็คเพิ่มตรงที่ว่าถ้าอ่าน ตารางแรกเสร็จ แล้ว insert แล้วให้ไปอ่านตารางที่สอง ต้องทำยังไงค่ะ

Fatal error: Uncaught exception 'PHPExcel_Exception' with message 'Invalid cell coordinate CONTENT_TYPE3' in C:\AppServ\www\Read\Classes\PHPExcel\Cell.php:539 Stack trace: #0 C:\AppServ\www\Read\Classes\PHPExcel\Worksheet.php(1121): PHPExcel_Cell::coordinateFromString('CONTENT_TYPE3') #1 C:\AppServ\www\Read\read_csv.php(19): PHPExcel_Worksheet->getCell('content_type3') #2 {main} thrown in C:\AppServ\www\Read\Classes\PHPExcel\Cell.php on line 539
อันนี้ Path C:\AppServ\www\Read\Classes

read.php
Code (PHP)
<?
// include เข้ามาก่อน		
include ("Classes/PHPExcel.php"); 
// Read CSV
$objReader = new PHPExcel_Reader_CSV();// สร้าง object ของ Class PHPExcel_Reader_CSV 
$objReader->setInputEncoding('CP1252');// กำหนดค่าต่างตามนี้
$objReader->setDelimiter(',');
$objReader->setEnclosure('');
$objReader->setLineEnding("\r\n");
$objReader->setSheetIndex(0);
$objReader->setInputEncoding('UTF-8');
$objPHPExcel = $objReader->load("test.csv");	//<====File Path
$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);

$strSql = "INSERT INTO test(day,content_type,policy,embed_views,watch_views,youtube_sold_revenue,partner_sold_revenue,afv_revenue,amount_payable,estimated_rpm) VALUES ('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]','$data[9]')"; //<======= SQL
//วนลูบดึงข้อมูลมาสร้างคำสั่ง SQL แต่ยังไม่คิวรี่นะ
for($i=3; $i<=$objWorksheet->getHighestRow(); $i++){// $i=2 คือให้เริ่มอ่านข้อมูลจากไฟล์บรรทัดที่2 บรรทัดแรกเป็นหัวคอลัมน์ครับ
	$strSql  .= "('".$objWorksheet->getCell('day'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('content_type'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('policy'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('embed_views'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('watch_views'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('youtube_sold_revenue'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('partner_sold_revenue'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('afv_revenue'.$i)->getValue()." ',";
	$strSql  .= "('".$objWorksheet->getCell('amount_payable'.$i)->getValue()." ',";
	$strSql  .= " '".$objWorksheet->getCell('estimated_rpm'.$i)->getValue()." '),";
}
$strSql = substr($strSql,0,strlen($strSql)-1);// ตัดเครื่องหมาย , ออก
$objPHPExcel->disconnectWorksheets();

// มาคิวรี่ตรงนี้ทีเดียวเลยครับ
 // connect Database ให้เรียบร้อยแล้วคิวรี่ซะ
 mysql_query($strSql)or die(mysql_error());
?>


ไฟล์ test.csv


# day table
day content_type policy embed_views watch_views youtube_sold_revenue partner_sold_revenue afv_revenue amount_payable estimated_rpm
20121201 commercial block 0 25 0 0 0 0
20121202 commercial block 0 36 0 0 0.098994 0.049002
20121203 commercial block 1 46 0.006983 0 0 0.002513
20121204 commercial block 0 13 0 0 0 0
20121205 commercial block 0 26 0 0 0 0
20121206 commercial block 3 41 0 0 0 0



# grand total table
embed_views watch_views ad_enabled_views youtube_sold_revenue partner_sold_revenue afv_revenue amount_payable estimated_rpm
2115956 82392993 8391538 2000.553765 0 16669.81778 8984.627104 1.07



# country table
country content_type policy embed_views watch_views youtube_sold_revenue partner_sold_revenue afv_revenue amount_payable estimated_rpm
DE commercial block 17 852 0.020457 0 0.098994 0.056365
TH commercial block 0 1 0 0 0 0
AD commercial free 0 3 0 0 0 0
AF commercial free 2 4 0 0 0 0

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-03-15 17:27:49 By : ฟ้า
 


 

No. 19

Guest


@Guest เจ้าของกระทู้ รบกวนขอ Email ติดต่อเพื่อสอบถามข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ได้ไหมค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-01-31 10:06:24 By : ฺฺBoww
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : import file.csv แล้วข้อมูลมันกระเถิบไปเป็น record ใหม่ค่ะ งง มา 3 วันแล้ว ช่วยตอบด้วยนะคะ T-T
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่