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,028

HOME > PHP > PHP Forum > PHP CSV นำข้อมูลเข้า MS-Access ก่อนอื่นก็ขอขอบคุณเพื่อนๆ ใน thaicreate ที่ช่วยๆ กันถาม-ตอบ กันนะคะ



 

PHP CSV นำข้อมูลเข้า MS-Access ก่อนอื่นก็ขอขอบคุณเพื่อนๆ ใน thaicreate ที่ช่วยๆ กันถาม-ตอบ กันนะคะ

 



Topic : 027310



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



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




ก่อนอื่นก็ขอขอบคุณเพื่อนๆ ใน thaicreate ที่ช่วยๆ กันถาม-ตอบ กันนะคะ ได้ความรู้มาเยอะเลยค่ะ
(ส่วนตัวเองตอบคนอื่นไปน้อยเพราะความรู้ยังไม่เข้าขั้น จะพัฒนาฝีมือตัวเองต่อไปค่า แล้วจะตอบเยอะๆ มั่ง)

วันนี้มาขอคำปรึกษาค่ะ เรื่องการนำข้อมูลเข้าจากไฟล์ CSV มาค่ะ

จากไฟล์ CSV ที่นำข้อมูลเข้า บรรทัดแรกเป็นชื่อ Field ซึ่งเป็นชนิด text ทั้งหมด
เวลานำข้อมูลเข้าแล้ว จากโค้ด มันจะ RUN ทุกบรรทัด ทำให้เกิด error
ซึ่ง field ที่เก็บข้อมูลมีชนิดที่เป็น number ด้วย (เกิด type mismatch เวลา execute sql statement)

Code (PHP)
<?
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
	$strSQL = "INSERT INTO offer ";
	$strSQL .="(REF,NUM_DAY_PAST,STM_CYCLE,sumpri,prefix,lastname, firstname,oa_code,legal_status,M1,M2,M3,Period,flag_28, flag_62,msg_add_d,Deviate)";
	$strSQL .=" VALUES ";
	$strSQL .="('".$objArr[1]."','".$objArr[4]."','".$objArr[5]."' ";
	$strSQL .=",'".$objArr[6]."','".$objArr[7]."','".$objArr[8]."' ";
	$strSQL .=",'".$objArr[9]."','".$objArr[10]."','".$objArr[11]."' ";
	$strSQL .=",'".$objArr[12]."','".$objArr[13]."','".$objArr[14]."' ";
	$strSQL .=",'".$objArr[17]."','".$objArr[18]."','".$objArr[19]."' ";
	$strSQL .=",'".$objArr[20]."','".$objArr[21]."')";
			
	$rs=odbc_exec($conn,$strSQL) ;
	if (!$rs){exit("Error in strSQL");}
}
?>


อยากถามว่า
1. พอจะมีวิธีเขียนให้ ข้ามบรรทัดแรกไปได้ไหมคะ
หรือไม่มี ต้องลบชื่อ Field ออกทางเดียว
เพราะข้อมูลที่นำเข้ามา เป็นไฟล์มาจากแผนกอื่นอีกทีนึง

2.ข้อมูลที่นำเข้ามีไม่แน่นอนค่ะ 800-1100 รายการแล้วแต่เดือนค่ะ
จะเขียนโค้ดยังไงดีคะ
รบกวนผู้รู้ทีนะคะ ขอบคุณค่ะ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2009-05-13 21:29:01 By : poong View : 1308 Reply : 5
 

 

No. 1



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


Code
1. พอจะมีวิธีเขียนให้ ข้ามบรรทัดแรกไปได้ไหมคะ
หรือไม่มี ต้องลบชื่อ Field ออกทางเดียว
เพราะข้อมูลที่นำเข้ามา เป็นไฟล์มาจากแผนกอื่นอีกทีนึง

วิธีแบบบ้านๆ
Code (PHP)
<?php
$i==0
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) {
	if($i==0){
		$i++;
		continue;
	}
	บันทึกโลดดดดดดดดดดดด....
	$i++;	
}
?>


Code
2.ข้อมูลที่นำเข้ามีไม่แน่นอนค่ะ 800-1100 รายการแล้วแต่เดือนค่ะ
จะเขียนโค้ดยังไงดีคะ
รบกวนผู้รู้ทีนะคะ ขอบคุณค่ะ

ต้องการถามอะไร เขียนแบบนี้ใช้ไม่ได้หรอ






Date : 2009-05-13 23:22:59 By : plakrim
 


 

No. 2



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



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


เอ่อตรง
while (($objArr = fgetcsv($objCSV, 1000, ",")) ใช่จำนวนเรคคอร์ดรึเปล่าคะ
ลองรายการต่ำกว่า 1000 รายการไม่มีปัญหาค่ะ
ถ้าอย่างนั้นเปลี่ยนเป็น 1100 ก็จะรับได้ 1100 รายการ
เข้าใจถูกรึเปล่าคะ
Date : 2009-05-14 00:01:16 By : poong
 

 

No. 3



โพสกระทู้ ( 11,835 )
บทความ ( 10 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

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


ตรงนั้นเป็น lenth ของตัวอักษร ของบรรทัดยาวที่สุดในไฟล์
ไม่เกี่ยวกับจำนวนแถว ผมเข้าใจถูกเปล่าหว่า ยิ่งโง่ภาษาประกิตอยู่ด้วย
Date : 2009-05-14 00:09:38 By : plakrim
 


 

No. 4



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



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


<?php
$row = 1;
$handle = fopen("test.csv", "r");
while (($data = fgetcsv($handle, 65536, ",")) !== FALSE) {
		if($row === 1){
			$row++;
			continue;
		}
    $num = count($data);
    if($num == 0){
    	break;
    }
    echo "<p> $num fields in line $row: <br /></p>\n";
    $row++;
    for ($c=0; $c < $num; $c++) {
        echo $data[$c] . "<br />\n";
    }
}
fclose($handle);
?>

ใส่ไปเป็น 65536 ไปเลยครับเพราะมันเป็นจำนวนแถวที่ excel จะบันถึกได้ครับ
Date : 2009-05-14 00:16:14 By : windersun
 


 

No. 5



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



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


เรื่อง length เข้าใจแล้วค่ะ ขอบคุณทุกคนค่ะ
แต่ยังมีปัญหาเดิมค่ะ นี่ตัวอย่างข้อมูลในไฟล์ csv
prefix,firstname,lastname,age,occupation
miss,kanda,wandee,45,housewife,
mister,mana,yuuyen,30,manager

จะเห็นว่าชุดแรกจะเป็นตัวอักษรทั้งหมด พอรันโค้ดมันก็เกิด error
เพราะว่าอายุเก็บเป็นชนิด number
แต่พอโค้ดรันไป ก็จะเก็บบรรทัดแรกไป ทำให้ type mismatch

พอจะมีการเขียนโค้ดแบบไหนให้ข้ามบรรทัดแรกไปหรือเปล่าคะ
เพราะว่าที่เคยทำใน excel มันจะใช้คำสั่ง
for($i=2;$i<=5;$i++){
If(trim($xlSheet1->Cells->Item($i,1)) != "")
{
$strSQL = "";
$strSQL .= "INSERT INTO customer2 ";
$strSQL .= "(CustomerID,Name)";
$strSQL .= "VALUES ";
$strSQL .= "('".$xlSheet1->Cells->Item($i,1)."','".$xlSheet1->Cells->Item($i,2)."')";
} มันใช้ตัวแปร i เป็นตัวรัน เรคคอร์ด

แต่ใน csv ที่ทำไม่รู้วิธีอ่ะค่ะ
โค้ดที่เคยเขียนไปแล้วแก้แบบคุณ plakrim บอกแล้วค่ะ แต่มันก็ไม่ได้ค่ะ รบกวนทีนะคะ
<?
$i==0 
while (($objArr = fgetcsv($objCSV, 1000, ",")) !== FALSE) { 
  if($i==0){ 
      $i++; 
      continue;
  }
  $strSQL = "INSERT INTO offer "; 
  $strSQL .="(REF,NUM_DAY_PAST) VALUES ";
  $strSQL .="('".$objArr[1]."','".$objArr[4]."')'";
  $rs=odbc_exec($conn,$strSQL) ; 
  if (!$rs){exit("Error in strSQL");} 
  $i++; //ตัวแปร i รู้สึกจะไม่ได้ใช้ดูบรรทัดอ่ะค่ะ คือไม่รู้ว่าเข้าใจอะไรผิดไปรึเปล่าค่ะ
}
?>



ใครพอมีวิธีเขียนโค้ดแบบอื่นช่วยแนะทีค่ะ งานส่งดึกนี้แล้วค่ะ รบกวนด้วยจริงๆค่ะ ติดอยู่ตัวเดียวจริงๆ
Date : 2009-05-14 16:17:10 By : poong
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : PHP CSV นำข้อมูลเข้า MS-Access ก่อนอื่นก็ขอขอบคุณเพื่อนๆ ใน thaicreate ที่ช่วยๆ กันถาม-ตอบ กันนะคะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 01
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 อัตราราคา คลิกที่นี่