PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

รบกวนช่วยดูโค้ดหน่อยค่ะว่าผิดตรงไหน เพราะพอวน for ข้อมูลเลยไม่ insert/update ไม่รู้ว่าต้องเอา for ไปใส่ตรงไหน

รบกวนช่วยดูโค้ดหน่อยค่ะว่าผิดตรงไหน เพราะพอวน for ข้อมูลเลยไม่ insert/update ไม่รู้ว่าต้องเอา for ไปใส่ตรงไหน
คือการทำงานให้เช็คแถวในเทเบิ้ลถ้าไม่มีข้อมูลให้ทำการ insert แต่ถ้ามีอยู่แล้วให้ทำ update ซึ่งข้อมูลเยอะมาก 16 ชุด จึงต้องทำวน for แต่เหมือน code for ผิด หรือใส่ที่ผิดก็ไม่แน่ใจ หาไม่เจอว่าตรงไหน เลยอยากให้พี่ๆรบกวนช่วยดูทีค่ะ  (ถ้าไม่วน insert/update ได้ค่ะ แต่พอใส่ for เลยไม่ลง)
for($i=3; $i<=16; $i++){
	 $select4=mysql_query("select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'") or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);
	if($num_rows4 == 0){
		
                if($_POST["cd_number_".$i]){
                    $strSQL3 = "INSERT INTO crew_documents VALUES( 
                        '".$_POST["cd_number_".$i]."',
                        '".$_POST["cd_date_issued_".$i]."',
                        '".$_POST["cd_date_expired_".$i]."',
                        '".$_POST["cd_country_".$i]."',
                        '".$_POST["cd_place_".$i]."',
                        '".$_POST["cd_authority_".$i]."',
                        '".$crews."', ".($i+1).", '1'
                    )";
                 $objQuery3 =   mysql_query($strSQL3);
				 echo ("<script>window.location='crew_profile_edit.php?id=".$crews."'</script>");		
                }
            }	
	
	else{

                if($_POST["cd_number_".$i]){
                    $strSQL4 = "update crew_documents set cd_number ='".$_POST['cd_number_'.$i]."',
                        cd_date_issued='".$_POST["cd_date_issued_".$i]."',
                        cd_date_expired='".$_POST["cd_date_expired_".$i]."',
                        cd_country='".$_POST["cd_country_".$i]."',
                        cd_place='".$_POST["cd_place_".$i]."',
                        cd_authority='".$_POST["cd_authority_".$i]."',
                        cd_fk_cp_id='".$crews."',cd_fk_nd_id= ".($i+1).",cd_status= '1'
						where cd_fk_cp_id='".$crews."' and cd_fk_nd_id=".($i+1)."
                    )";
                 $objQuery4 =   mysql_query($strSQL4);
				 echo ("<script>window.location='crew_profile_edit.php?id=".$crews."'</script>");		
                }
            }	
	}


โดย:  Thepaysz IP: 183.89.147.xxx วันที่: 09-10-2015 เวลา: 17:57:08

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

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


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


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 1
การเขียนโค้ด โดยเฉพาะการตรวจสอบ error ต้องใจเย็นๆ ค่อยๆ ไล่ดูไปทีละจุด ดูคำแนะนำนี้เป็นแนวทาง

วนลูปดูคำสั่่ง sql ว่าค่าที่เรากำหนด แล้วได้ค่าตามที่ต้องการหรือไม่ เช็คค่าจากการ echo คำส่ัง sql

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    echo $i." --- ";
    echo $sql;
    echo "<br><hr>"

}

จากนั้นก็คิวรี่คำสั่ง sql ที่เราตรวจสอบแล้วว่า ได้ค่า $num_rows4 ถูกต้องหรือไม่ ปกติถ้ามีค่าก็จะเป็นตัวเลขมากกว่า 0

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
    echo $i." --- ";
    echo $num_rows4;
    echo "<br><hr>"

}

ตรวจสอบค่า $num_rows4 ว่าคืนค่ากลับมา และมีค่ามากกว่า 0 หรือเปล่า ถ้ามีแสดงว่ามีข้อมูลเดิมอยู่แล้ว ให้แสดงคำว่า UPDATE
แต่ถ้าไม่มี .ให้แสดงคำว่า INSERT

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
    echo $i." --- ";
    if(isset($num_rows4) && $num_rows4>0){
        echo " UPDATE";
    }else{
        echo " INSERT";
    }
    echo "<br><hr>"

}

ตรวจสอบค่าตัวแปร POST ที่มีการเชื่อมชื่อตัวแปร ว่ามีค่าส่งมี และไม่เป็นค่าว่างหรือปล้า ถ้ามีค่าส่งมา และไม่เป็นค่าว่าง
ให้ แสดงชื่อและตัวแปร $_POST ที่ส่งมาทัั้งหมด หน้านี้ให้เราเช็คชื่อ และค่าของตัวแปรว่าส่งมาถูกต้องหรือไม่

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
    echo $i." --- ";
    if(isset($num_rows4) && $num_rows4>0){
        echo " UPDATE";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
            echo "<pre>";  
            print_r($_POST);
            echo "</pre>";  
        }
        
    }else{
        echo " INSERT";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
            echo "<pre>";  
            print_r($_POST);
            echo "</pre>";  
        }        
    }
    echo "<br><hr>"


ต่อไปแทรกคำส่ัง sql เข้ามา แล้วก็ให้ echo คำส่ัง sql ดูว่าค่าที่ส่งมา แสดงในคำสั่ง sql ถูกต้องหรือไม่

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
    echo $i." --- ";
    if(isset($num_rows4) && $num_rows4>0){
        echo " UPDATE";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL4 = "update crew_documents set cd_number ='".$_POST['cd_number_'.$i]."',
                    cd_date_issued='".$_POST["cd_date_issued_".$i]."',
                    cd_date_expired='".$_POST["cd_date_expired_".$i]."',
                    cd_country='".$_POST["cd_country_".$i]."',
                    cd_place='".$_POST["cd_place_".$i]."',
                    cd_authority='".$_POST["cd_authority_".$i]."',
                    cd_fk_cp_id='".$crews."',cd_fk_nd_id= ".($i+1).",cd_status= '1'
                    where cd_fk_cp_id='".$crews."' and cd_fk_nd_id=".($i+1)."
                )";
                echo $strSQL4;
        }
        
    }else{
        echo " INSERT";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL3 = "INSERT INTO crew_documents VALUES( 
                    '".$_POST["cd_number_".$i]."',
                    '".$_POST["cd_date_issued_".$i]."',
                    '".$_POST["cd_date_expired_".$i]."',
                    '".$_POST["cd_country_".$i]."',
                    '".$_POST["cd_place_".$i]."',
                    '".$_POST["cd_authority_".$i]."',
                    '".$crews."', ".($i+1).", '1'
                )";
                echo $strSQL3;
        }        
    }
    echo "<br><hr>"

}

ต่อด้วยทำการคิวรี่คำส่ัง sql หลักจากตรวจสอบแล้ว และเมื่อคิวรี่่แล้วเราจะเช็คว่า
มีการทำงานการคิวรี่คำสั่ง sql หรือไม่ โดยตรวจสอบแถวที่มีการกระทำเกิดขึ้น ว่ามี มากกว่า 0 หรือไม่

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
    echo $i." --- ";
    if(isset($num_rows4) && $num_rows4>0){
        echo " UPDATE";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL4 = "update crew_documents set cd_number ='".$_POST['cd_number_'.$i]."',
                    cd_date_issued='".$_POST["cd_date_issued_".$i]."',
                    cd_date_expired='".$_POST["cd_date_expired_".$i]."',
                    cd_country='".$_POST["cd_country_".$i]."',
                    cd_place='".$_POST["cd_place_".$i]."',
                    cd_authority='".$_POST["cd_authority_".$i]."',
                    cd_fk_cp_id='".$crews."',cd_fk_nd_id= ".($i+1).",cd_status= '1'
                    where cd_fk_cp_id='".$crews."' and cd_fk_nd_id=".($i+1)."
                )";
                $objQuery4 =   mysql_query($strSQL4);
                if(mysql_affected_rows()>0){
                    echo "UPDATE SUCCESS";  
                }            
        }
        
    }else{
        echo " INSERT";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL3 = "INSERT INTO crew_documents VALUES( 
                    '".$_POST["cd_number_".$i]."',
                    '".$_POST["cd_date_issued_".$i]."',
                    '".$_POST["cd_date_expired_".$i]."',
                    '".$_POST["cd_country_".$i]."',
                    '".$_POST["cd_place_".$i]."',
                    '".$_POST["cd_authority_".$i]."',
                    '".$crews."', ".($i+1).", '1'
                )";
                $objQuery3 =   mysql_query($strSQL3);
                if(mysql_affected_rows()>0){
                    echo "INSERT SUCCESS";  
                }
        }        
    }
    echo "<br><hr>"

}

ถ้าทุกอย่างถูกต้อง ก็ให้ปิดคอมม้นส่วนการเช็คต่างๆ ไป แล้วแทรกโค้ดการเปลี่ยนไปหน้าอื่นเข้ามา

for($i=3; $i<=16; $i++){
    $sql="select*from crew_documents where cd_fk_cp_id = '".$crews."' and cd_fk_nd_id='".$i."'";
    $select4=mysql_query($sql) or die (mysql_error());
	$num_rows4=mysql_num_rows($select4);    
//    echo $i." --- ";
    if(isset($num_rows4) && $num_rows4>0){
 //       echo " UPDATE";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL4 = "update crew_documents set cd_number ='".$_POST['cd_number_'.$i]."',
                    cd_date_issued='".$_POST["cd_date_issued_".$i]."',
                    cd_date_expired='".$_POST["cd_date_expired_".$i]."',
                    cd_country='".$_POST["cd_country_".$i]."',
                    cd_place='".$_POST["cd_place_".$i]."',
                    cd_authority='".$_POST["cd_authority_".$i]."',
                    cd_fk_cp_id='".$crews."',cd_fk_nd_id= ".($i+1).",cd_status= '1'
                    where cd_fk_cp_id='".$crews."' and cd_fk_nd_id=".($i+1)."
                )";
                $objQuery4 =   mysql_query($strSQL4);
  //              if(mysql_affected_rows()>0){
  //                  echo "UPDATE SUCCESS";  
 //               }        
                echo ("<script>window.location='crew_profile_edit.php?id=".$crews."'</script>");	
        }
        
    }else{
        echo " INSERT";
        if(isset($_POST["cd_number_".$i]) && $_POST["cd_number_".$i]!=""){
                $strSQL3 = "INSERT INTO crew_documents VALUES( 
                    '".$_POST["cd_number_".$i]."',
                    '".$_POST["cd_date_issued_".$i]."',
                    '".$_POST["cd_date_expired_".$i]."',
                    '".$_POST["cd_country_".$i]."',
                    '".$_POST["cd_place_".$i]."',
                    '".$_POST["cd_authority_".$i]."',
                    '".$crews."', ".($i+1).", '1'
                )";
                $objQuery3 =   mysql_query($strSQL3);
 //               if(mysql_affected_rows()>0){
 //                   echo "INSERT SUCCESS";  
//                }
                echo ("<script>window.location='crew_profile_edit.php?id=".$crews."'</script>");		
        }        
    }
//    echo "<br><hr>"

}


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

ปล. คำแนะนำข้างต้น บางทีอาจจะไม่ได้แก้ไขโจทย์จากคำถามที่ถามมาได้ เพราะเงื่อนไขอื่นๆ ไม่มีใครรู้
นอกจากผู้ที่เขียนโค้ดนั้นๆ เอง 




โดย:  Ninenik IP: 1.47.41.xxx วันที่: 09-10-2015