เช็คค่าข้อมูลซ้ำลง db จากไฟล์ excel ทำยังไงอะครับ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา เช็คค่าข้อมูลซ้ำลง db จากไฟล์ excel ทำยังไงอะครับ

เช็คค่าข้อมูลซ้ำลง db จากไฟล์ excel ทำยังไงอะครับ
<?php require_once('connect.php'); ?>
<?php
mysql_query("SET NAMES UTF8");
/** PHPExcel */
require_once 'Classes/PHPExcel.php';

/** PHPExcel_IOFactory - Reader */
include 'Classes/PHPExcel/IOFactory.php';


$inputFileName = "uploads/test.xls"; //ที่เก็บไฟล์จากหน้าอัพโหลด
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);  
$objReader = PHPExcel_IOFactory::createReader($inputFileType);  
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load($inputFileName);  

$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];

$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
    $dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
    if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
        ++$r;
        foreach($headingsArray as $columnKey => $columnHeading) {
            $namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
        }
    }
}

//echo '<pre>';
//var_dump($namedDataArray);
//echo '</pre><hr />';

//*** Connect to MySQL Database ***//
$i = 0;
foreach ($namedDataArray as $result) {
        $i++;
        $strSQL = "";
        $strSQL .= "INSERT INTO chkmember "; //tabel ในดาต้าเบส  
        $strSQL .= "(mem_stdid,mem_number,mem_name,mem_lname
        ,mem_birth,mem_uclass,mem_named,mem_namem,mem_adr,mem_type,mem_place
        ,mem_district,mem_province,mem_adr1,mem_type1,mem_place1,mem_district1
        ,mem_province1,mem_numsd9,mem_status,mem_time)"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส
        $strSQL .= "VALUES ";
        $strSQL .= "('".$result['mem_stdid']."','".$result['mem_number']."'
        ,'".$result['mem_name']."','".$result['mem_lname']."'
        ,'".$result['mem_birth']."','".$result['mem_uclass']."'
        ,'".$result['mem_named']."','".$result['mem_namem']."'
        ,'".$result['mem_adr']."','".$result['mem_type']."'
        ,'".$result['mem_place']."','".$result['mem_district']."'
        ,'".$result['mem_province']."','".$result['mem_adr1']."'
        ,'".$result['mem_type1']."','".$result['mem_place1']."'
        ,'".$result['mem_district1']."','".$result['mem_province1']."'
        ,'".$result['mem_numsd9']."','".$result['mem_status']."' )"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส

        mysql_query($strSQL) or die(mysql_error());
}
?>
<script>
  window.location.href = "upload.php"; //ลิ้งหน้าาที่จะให้เปิดต่อไป
 </script>

ผมใช้โค๊ดตัวนี้บันทึกข้อมูลจากไฟล์ excel ลง db อะครับ อยากทราบว่าทำไงให้มันเช็คค่าใน db อะครับ คือถ้ามีข้อมูลแล้วก้ให้มันบันทึกซ้ำลงไปเลยอะครับ คือปกติมันจะต่อท้ายไปเรื่อยๆอะครับ ขอบคุณครับ


Eterziz 124.122.172.xxx 22-05-2015 13:06:34

คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )

 ความคิดเห็นที่ 1
SELECT ข้อมูลหา ค่าที่ซ้ำ กำหนดใน WHERE ถ้ามีข้อมูล ก็เปลี่ยนเป็น UPDATE แทน INSERT


$q="SELECT a_id FROM table WHERE a_id='ตัวแปรค่าซ้ำ' ";
if(@mysql_num_rows(@mysql_query($q))>0){
   // คำสั่ง UPDATE
}else{
    /// คำสั่ง INSERT
}


ninenik 180.183.111.xxx 22-05-2015
 ความคิดเห็นที่ 2
<?php require_once('connect.php'); ?>
<?php
mysql_query("SET NAMES UTF8");
/** PHPExcel */
require_once 'Classes/PHPExcel.php';

/** PHPExcel_IOFactory - Reader */
include 'Classes/PHPExcel/IOFactory.php';


$inputFileName = "uploads/test.xls"; //ที่เก็บไฟล์จากหน้าอัพโหลด
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);  
$objReader = PHPExcel_IOFactory::createReader($inputFileType);  
$objReader->setReadDataOnly(true);  
$objPHPExcel = $objReader->load($inputFileName);  

$objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$headingsArray = $objWorksheet->rangeToArray('A1:'.$highestColumn.'1',null, true, true, true);
$headingsArray = $headingsArray[1];

$r = -1;
$namedDataArray = array();
for ($row = 2; $row <= $highestRow; ++$row) {
    $dataRow = $objWorksheet->rangeToArray('A'.$row.':'.$highestColumn.$row,null, true, true, true);
    if ((isset($dataRow[$row]['A'])) && ($dataRow[$row]['A'] > '')) {
        ++$r;
        foreach($headingsArray as $columnKey => $columnHeading) {
            $namedDataArray[$r][$columnHeading] = $dataRow[$row][$columnKey];
        }
    }
}

//echo '<pre>';
//var_dump($namedDataArray);
//echo '</pre><hr />';

//*** Connect to MySQL Database ***//
$q="SELECT mem_stdid FROM chkmember WHERE mem_stdid='mem_stdid' ";
if(@mysql_num_rows(@mysql_query($q))>0){
    /// คำสั่ง INSERT
        $i = 0;
foreach ($namedDataArray as $result) {
        $i++;
        $strSQL = "";
        $strSQL .= "INSERT INTO chkmember "; //tabel ในดาต้าเบส  
        $strSQL .= "(mem_stdid,mem_number,mem_name,mem_lname
        ,mem_birth,mem_uclass,mem_named,mem_namem,mem_adr,mem_type,mem_place
        ,mem_district,mem_province,mem_adr1,mem_type1,mem_place1,mem_district1
        ,mem_province1,mem_numsd9,mem_status,mem_time)"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส
        $strSQL .= "VALUES ";
        $strSQL .= "('".$result['mem_stdid']."','".$result['mem_number']."'
        ,'".$result['mem_name']."','".$result['mem_lname']."'
        ,'".$result['mem_birth']."','".$result['mem_uclass']."'
        ,'".$result['mem_named']."','".$result['mem_namem']."'
        ,'".$result['mem_adr']."','".$result['mem_type']."'
        ,'".$result['mem_place']."','".$result['mem_district']."'
        ,'".$result['mem_province']."','".$result['mem_adr1']."'
        ,'".$result['mem_type1']."','".$result['mem_place1']."'
        ,'".$result['mem_district1']."','".$result['mem_province1']."'
        ,'".$result['mem_numsd9']."','".$result['mem_status']."' )"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส

        mysql_query($strSQL) or die(mysql_error());
}
}else{
        $i = 0;
foreach ($namedDataArray as $result) {
        $i++;
        $strSQL = "";
        $strSQL .= "UPDATE INTO chkmember "; //tabel ในดาต้าเบส  
        $strSQL .= "(mem_stdid,mem_number,mem_name,mem_lname
        ,mem_birth,mem_uclass,mem_named,mem_namem,mem_adr,mem_type,mem_place
        ,mem_district,mem_province,mem_adr1,mem_type1,mem_place1,mem_district1
        ,mem_province1,mem_numsd9,mem_status,mem_time)"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส
        $strSQL .= "VALUES ";
        $strSQL .= "('".$result['mem_stdid']."','".$result['mem_number']."'
        ,'".$result['mem_name']."','".$result['mem_lname']."'
        ,'".$result['mem_birth']."','".$result['mem_uclass']."'
        ,'".$result['mem_named']."','".$result['mem_namem']."'
        ,'".$result['mem_adr']."','".$result['mem_type']."'
        ,'".$result['mem_place']."','".$result['mem_district']."'
        ,'".$result['mem_province']."','".$result['mem_adr1']."'
        ,'".$result['mem_type1']."','".$result['mem_place1']."'
        ,'".$result['mem_district1']."','".$result['mem_province1']."'
        ,'".$result['mem_numsd9']."','".$result['mem_status']."' )"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส

        mysql_query($strSQL) or die(mysql_error());
}
}
?>
<script>
  window.location.href = "upload.php"; //ลิ้งหน้าาที่จะให้เปิดต่อไป
 </script>

แบบนี้หรือเปล่าครับ มันรันไม่ผ่านอะครับ


eterziz 124.122.172.xxx 22-05-2015 13:33
 ความคิดเห็นที่ 3
<?php
  
//*** Connect to MySQL Database ***//  

        $i = 0;  
foreach ($namedDataArray as $result) {  

	$q="SELECT mem_stdid FROM chkmember WHERE mem_stdid='".$result['mem_stdid']."' ";  
	if(@mysql_num_rows(@mysql_query($q))>0){  
	
			$i++;  
			$strSQL = "";  
			$strSQL .= "INSERT INTO chkmember "; //tabel ในดาต้าเบส    
			$strSQL .= "(mem_stdid,mem_number,mem_name,mem_lname  
			,mem_birth,mem_uclass,mem_named,mem_namem,mem_adr,mem_type,mem_place  
			,mem_district,mem_province,mem_adr1,mem_type1,mem_place1,mem_district1  
			,mem_province1,mem_numsd9,mem_status,mem_time)"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส  
			$strSQL .= "VALUES ";  
			$strSQL .= "('".$result['mem_stdid']."','".$result['mem_number']."'  
			,'".$result['mem_name']."','".$result['mem_lname']."'  
			,'".$result['mem_birth']."','".$result['mem_uclass']."'  
			,'".$result['mem_named']."','".$result['mem_namem']."'  
			,'".$result['mem_adr']."','".$result['mem_type']."'  
			,'".$result['mem_place']."','".$result['mem_district']."'  
			,'".$result['mem_province']."','".$result['mem_adr1']."'  
			,'".$result['mem_type1']."','".$result['mem_place1']."'  
			,'".$result['mem_district1']."','".$result['mem_province1']."'  
			,'".$result['mem_numsd9']."','".$result['mem_status']."' )"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส  
	  
			mysql_query($strSQL) or die(mysql_error());  
			
	}else{
	
			$i++;  
			$strSQL = "";  
			$strSQL .= "UPDATE INTO chkmember "; //tabel ในดาต้าเบส    
			$strSQL .= "(mem_stdid,mem_number,mem_name,mem_lname  
			,mem_birth,mem_uclass,mem_named,mem_namem,mem_adr,mem_type,mem_place  
			,mem_district,mem_province,mem_adr1,mem_type1,mem_place1,mem_district1  
			,mem_province1,mem_numsd9,mem_status,mem_time)"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส  
			$strSQL .= "VALUES ";  
			$strSQL .= "('".$result['mem_stdid']."','".$result['mem_number']."'  
			,'".$result['mem_name']."','".$result['mem_lname']."'  
			,'".$result['mem_birth']."','".$result['mem_uclass']."'  
			,'".$result['mem_named']."','".$result['mem_namem']."'  
			,'".$result['mem_adr']."','".$result['mem_type']."'  
			,'".$result['mem_place']."','".$result['mem_district']."'  
			,'".$result['mem_province']."','".$result['mem_adr1']."'  
			,'".$result['mem_type1']."','".$result['mem_place1']."'  
			,'".$result['mem_district1']."','".$result['mem_province1']."'  
			,'".$result['mem_numsd9']."','".$result['mem_status']."' )"; //คอลัมในดาต้าเบส เรียงตามดาต้าเบส  
	  
			mysql_query($strSQL) or die(mysql_error());  
		
	}
}  

?>


>>>  อัพเดท >>> 22-05-2015
------------------------------------------
สลับกัน ด้านบนเป็นอัพเดท คือมีข้อมูลอยู่แล้ว  num_row > 0 ส่วนด้านล่างเป็น insert

>>>  อัพเดท >>> 22-05-2015
------------------------------------------
คำสั่ง UPDATE ให้แก้ไขด้วย รูปแบบไม่น่าจะถูก ต้องมี where


ninenik 180.183.111.xxx 22-05-2015
 ความคิดเห็นที่ 4
ไม่ได้อะครับ มันขึ้น You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INTO chkmember (mem_stdid,mem_number,mem_name,mem_lname ,mem_birt' at line 1 อะครับ 


eterziz 124.122.172.xxx 22-05-2015 14:07
 ความคิดเห็นที่ 5
ดูเรื่อง คำสั่ง sql การอัพเดทข้อมูลเพิ่มเติม ตัวอย่างโค้ดแนวทาง

    if(isset($_POST['h_user_id']) && $_POST['h_user_id']!=""){  // กรณีแก้ไขข้อมูล  
        $q="  
        UPDATE tbl_user SET   
        user_name='".$_POST['name']."',  
        user_pic='".$dataUpPic."'   
        WHERE user_id='".$_POST['h_user_id']."'  
        ";  
        mysql_query($q);  
    }else{ // กรณีเพิ่มข้อมูล  
        $q="  
        INSERT INTO tbl_user(  
            user_id,  
            user_name,  
            user_pic  
        )VALUES(  
            NULL,  
            '".$_POST['name']."',  
            '".$dataUpPic."'  
        )  
        ";     
	}

ทบทวน เพิ่ม ลบ แก้ไข เช็คฟอร์ม แบ่งหน้า อัพรูป ในโค้ดเดียว 




ninenik 180.183.111.xxx 22-05-2015
1






เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ