เขียน sql update checkbox แล้วไม่ยอมอัพเดตให้ค่ะ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา เขียน sql update checkbox แล้วไม่ยอมอัพเดตให้ค่ะ

เขียน sql update checkbox แล้วไม่ยอมอัพเดตให้ค่ะ
<?php
if(isset($_POST["Update"])){
	$itemID = $_POST['itemID'];
	$strID = $_POST['strID'];
	 include("db_connect_edpex.php");
		$sql = "UPDATE strength SET 
		                            strLevel = '".$_POST['level']."' , 
									strItemRef = '".$_POST['strItemRef']."' ,
		                            strDescription = '".$_POST['strDescription']."',
		                            itemID = '".$itemID."' 
		        WHERE strID = '".$strID."' ";
		
		$objQuery = mysql_query($sql);
		
		foreach($_POST['chkKey'] as $key=>$value)
	   {
		 $sq1 = "UPDATE strengthkf SET keyID = '".$_POST['chkKey'][$key]."' 
		 					
				WHERE strID = '".$strID."' AND keyID = '".$_POST['chkKey'][$key]."'";
								        
		 $qr= mysql_query($sq1) or die(mysql_error());
	   }
	}
?>



ตาราง strengthkf จะเป็นแบบ
strID  | keyID
  1      |  2
  1      |  3

ค่า 2,3 คือ keyID จาก checkbox ที่เราเช็คคะ ถ้า checkbox มี 1,2,3,4  เราติ้ก 1 เพิ่ม ก็ให้มันลงไปเก็บเพิ่มเป็น
strID  | keyID
  1      |  2
  1      |  3
  1      |  1
  
ตรง sql ต้องแก้ยังไงคะ หรือต้องกำหนดเงื่อนไขอะไรเพิ่มเติม ขอบคุณคะ 


Um0000um 58.8.155.xxx 27-03-2016 02:38:14

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

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


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


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

 ความคิดเห็นที่ 1
การเพิ่มแถวข้อมูล ควรใช้เป็นคำสั่ง INSERT แทนอัพเดทหรือเปล่า


ninenik 122.155.43.xxx 27-03-2016
 ความคิดเห็นที่ 2
อันนี้เป็นการมาทำ checkboxรอบ 2 อ่าค่ะ แบบว่าให้ edit อีกรอบนึง ถ้าอันไหน uncheck ก็ให้อัพเดต 
ต้องแก้ยังไงคะ 

โค้ด insert ปกติ
 foreach($_POST['chkKey'] as $key=>$value)
	   {
		 $sq1 = "INSERT INTO strengthkf(keyID, strID)
		 VALUES ('".$_POST['chkKey'][$key]."','".$strID."')"; //get keyID into strKF table 
		 $qr= mysql_query($sq1) or die(mysql_error());
       } 


um0000um 171.6.155.xxx 27-03-2016 16:30
 ความคิดเห็นที่ 3
ใช้วิธีเป็นลบทั้งหมดออกได้ไหม 
แล้วก็ใช้โค้ดบันทึกเข้าไปใหม่แทน

>>>  อัพเดท >>> 27-03-2016
------------------------------------------
ถ้าตัวแปร $strID เป็นตัวเชื่อมโยงความสัมพันธ์ 
ก็ให้ลบรายการที่มีค่า $strID ออกให้หมดก่อน ด้วยคำสั่ง


$sq1 = "DELETE FROM strengthkf WHERE strID='".$strID."' ";
     $qr= mysql_query($sq1) or die(mysql_error());  
 
แล้วก็วนลูปเพิ่มข้อมูลเข้าไปใหม่เป็น
 
 foreach($_POST['chkKey'] as $key=>$value)
  {
$sq1 = "INSERT INTO strengthkf(keyID, strID)
VALUES ('".$_POST['chkKey'][$key]."','".$strID."')"; //get keyID into strKF table 
$qr= mysql_query($sq1) or die(mysql_error());
       } 
 
จะได้เป็น
 
<?php
if(isset($strID) && $strID!=""){
$sq1 = "DELETE FROM strengthkf WHERE strID='".$strID."' ";
$qr= mysql_query($sq1) or die(mysql_error());  
foreach($_POST['chkKey'] as $key=>$value)
  {
$sq1 = "INSERT INTO strengthkf(keyID, strID)
VALUES ('".$_POST['chkKey'][$key]."','".$strID."')"; //get keyID into strKF table 
$qr= mysql_query($sq1) or die(mysql_error());
  } 
}
?>
 
โค้ดส่วนอื่นก็ปรับเพิ่มเติมตามเหมาะสม


ninenik 122.155.43.xxx 27-03-2016
 ความคิดเห็นที่ 4
ใช้การลบก่อน แล้วค่อย insert  เข้าไปใหม่แล้วคะ แต่มันเก็บแค่เฉพาะค่า strID 

keyID | strID
  0      |  1
  0      |  1


คือหน้า edit เป็นการเอาที่เรากรอก ก่อนหน้านี้ มา echo โชวอ่าค่ะ
 ส่วนโค้ดตรง checkbox เป็นแบบนี้ แต่ก็ไม่น่าจะเป็นที่ตรงนี้อ่าคะ

<td>
        	<?php   
         	$sql1 = " SELECT relevantkf.keyID , keyfactor.keyName  
          	FROM relevantkf INNER JOIN keyfactor ON relevantkf.keyID = keyfactor.keyID  
          	INNER JOIN itemreview ON relevantkf.itemID = itemreview.itemID  
          	WHERE itemreview.itemID ='$itemID' ";  
      		$objQuery = mysql_query($sql1);  
        	
			while($fetch = mysql_fetch_assoc($objQuery)){  
        	$i=0;
        	while($i<sizeof($key)) { 
        
        if($key[$i] == $fetch["keyID"])
		{ ?>
		<li>     
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>" checked /> 
        <?php echo $fetch["keyName"];?>
        </li> 
		
        <?php break; }
		
		$i++; ?>    
        <?php  } 
		
		if($i== sizeof($key)){ ?>
			<li> 
         
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>"  /> 
        <?php echo $fetch["keyName"];?>
        </li> 
		<?php	} }
		
		?>  

        </td>




um0000um 171.7.231.xxx 27-03-2016 20:11
 ความคิดเห็นที่ 5
แสดงว่ค่า keyID ไม่ได้ส่งมาด้วย ต้องไล่ดูว่าเพราะอะไร


ninenik 180.183.104.xxx 28-03-2016
1






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