PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

โชว์ข้อมูลจากcheck box มีปัญหาค่ะ

โชว์ข้อมูลจากcheck box มีปัญหาค่ะ
<table id="myTbl" width="600" border="1" >
  <tr id="myTr">
    <th width="91"> <div align="center">No. </div></th>
    <th width="98"> <div align="center">keyName </div></th>
    <th width="30"> <div align="center">Select factor </div></th>
    <th width="30"> <div align="center">Edit</div></th>
  </tr>
<?php
$i=1;
while($objResult = mysql_fetch_array($objQuery))
{
?>
  <tr>
     
    <td><?=$i?></td>
    <td><?php echo $objResult["keyName"];?></td> 
    <td align="center"><input type="checkbox" name="chkDel[]" value="<?php echo $objResult["keyID"];?>"></td>
    <td align="center"><a href="editKeyfactor?keyID=<?php echo $objResult["keyID"];?>">Edit</a></td>
    
  </tr>
  <? $i++; ?>
<?php
}
?>



หลังเลือกแล้วให้โชว์ตัวที่เราเลือก แต่ที่ได้เป็นค่า ID แทน

ปล. การทำงานคือ เลือกcheckboxจากตารางที่1นำไปโชว์แล้วกด submit จากนั้นค่าที่ได้จาก ตารางที่1จะนำไปเป็นcheckboxต่อของตารางที่2ค่ะ

ปัญหาคือ จะส่งค่าตรง valueยังไง เพราะลองเปลี่ยนเป็น keyName ได้โชว์ชื่อได้แต่มันส่งผลกระทบกับอีกตารางทำให้อีกตารางโชว์ค่าที่เลือกต่อจากตารางด้านบนนี้ไม่ขึ้น




โดย:  Um0000um IP: 171.5.247.xxx วันที่: 01-03-2016 เวลา: 00:00:37

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

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


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


  • ( หรือ สามารถทำการ สมัครสมาชิก และล็อกอิน ด้วย ปุ่ม Log in with Facebook ด้านล่าง )
 ความคิดเห็นที่ 3
ตรงตารางที่ 2 อะค่ะ มันติดตรงนี้ 
if(count($dataChk)>0){ // ตรวจสอบว่ามีการเช็คเลือกมารายการมาอย่างน้ยอ 1 รายการหรือไม่ ถ้ามี  
    $chk_keyID=implode(",",$dataChk); // จัดรูปแบบค่า keyID ที่ส่งมาให้เป้นแบบ string เพื่อใช้ในคำสั่ง SQL  
    // สมมติเรากดส่งค่า keyID มาสองตัว เป็นค่า 1 กับ 3 คำส่ัง implode() นี้ก้จะเอาทั้งสองค่ามาต่อกัน จะได้เป้น 1,3  
  
        $strSQL = "  
        SELECT * FROM relavantkf INNER JOIN keyfactor   
        ON relavantkf.keyID=keyfactor.keyID  
        WHERE relavantkf.keyID IN($chk_keyID)  
        ";    
        $objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");    
?>    


หากมีโค้ดนี้อยู่จะไม่สามารถโชว์ข้อมูลได้อะคะ YY 

โดย:  Um0000um IP: 171.5.247.xxx วันที่: 02-03-2016 เวลา: 00:08:23
 ความคิดเห็นที่ 2
การส่งหลายค่าไป ให้เราใช้เป็นตัว input type hidden เพิ่มเข้าไป
สมมติเราส่งเพียงสองค่า เช่น keyID กัล keyName
เราใช้เพียง checkbox อันเดียวก็ได้ โดยใช้ key ของ array checkbox เป็น keyID
และให้ value ของ checkbox เป็น keyName
ตัวอย่าง
 
<input type="checkbox" name="chkDel[<?=$objResult["keyID"]?>]" value="<?php echo $objResult["keyName"];?>">
 
แบบนี้เวลาที่เราส่งค่าไป checkbox จะเป้นค่าแบบ array มี key เป็น keyID ซึ่งไม่ซ้ำกัน
และมีค่า value เป็น keyName 
 
การรับค่าที่ส่งมาเพื่อไว้ใช้งานก็คือ
 
<?php
$dataChk=(isset($_POST['chkDel']))?$_POST['chkDel']:NULL;
if(count($dataChk)>0){ // ตรวจสอบว่ามีการเช็คเลือกมารายการมาอย่างน้ยอ 1 รายการหรือไม่ ถ้ามี
	foreach($dataChk as $k_chk=>$v_chk){ // วนลูปค่า array ที่ส่งมา โดยกำหนด $k_chk เป็น key และ $v_chk เป็น value
		// $k_chk ก็คือ key ของ array ซึ่งก็คือมีค่าเท่ากับ keyID ค่าที่อยู่ใน chkDel[xxxx] มาจากค่า name ของ checkbox
		// $v_chk ก็คือ value ของ array ซึ่งก็คือมี่ค่าเท่ากับ keyName มาจากค่า value ของ checkbxo
	}
}
?>
 
สมมติเราอย่างส่งค่ามามากกว่าสองค่า  เช่น ส่ง keyDate เข้ามาเพิ่ม ให้ใช้ input type hidden 
แบบ array เพิ่มเข้ามา โดยให้ name มี key เป้นค่าเดียวกัน เพื่ออ้างอิง ซึ่งที่นีใช้เป็น keyID ก็จะได้เป็น
 
    <input type="checkbox" name="chkDel[<?=$objResult["keyID"]?>]" value="<?php echo $objResult["keyName"];?>">
    <input name="h_date[<?=$objResult["keyID"]?>]" type="hidden"  value="<?php echo $objResult["keyDate"];?>">
 
สังเกตที่ค่า key ของ input แบบ array ทั้งสองที่เราส่งไป เราจะใช้ keyID


name="chkDel[<?=$objResult["keyID"]?>]"
name="h_date[<?=$objResult["keyID"]?>]"
 
เพื่อใช้สำหรับอ้างอิงค่าในการแสดงข้อมูล
 
<?php
$dataChk=(isset($_POST['chkDel']))?$_POST['chkDel']:NULL;
$data_hDate=(isset($_POST['h_date']))?$_POST['h_date']:NULL;
if(count($dataChk)>0){ // ตรวจสอบว่ามีการเช็คเลือกมารายการมาอย่างน้ยอ 1 รายการหรือไม่ ถ้ามี
	foreach($dataChk as $k_chk=>$v_chk){ // วนลูปค่า array ที่ส่งมา โดยกำหนด $k_chk เป็น key และ $v_chk เป็น value
		// $k_chk ก็คือ key ของ array ซึ่งก็คือมีค่าเท่ากับ keyID ค่าที่อยู่ใน chkDel[xxxx] มาจากค่า name ของ checkbox
		// $v_chk ก็คือ value ของ array ซึ่งก็คือมี่ค่าเท่ากับ keyName มาจากค่า value ของ checkbxo
		// ตัวแปรที่เราจะได้ค่าเพิ่มเข้ามา ก็คือ keyDate อ้างอิงจาก keyID ได้ดังนี้
		$v_h_date = $data_hDate[$k_chk];  // ใช้ key เป้น keyID เช่นเดียวกันกับ checkbox
		// $v_h_date ก็คือ value ของ array ซึ่งมีค่าเท่ากับ keyDate มาจาก value ของ input hidden
	}
}
?>
 
การวนลูปแสดงใน tr ของตาราง ก็จะประมาณนี้
 
 
<?php
$dataChk=(isset($_POST['chkDel']))?$_POST['chkDel']:NULL;
$data_hDate=(isset($_POST['h_date']))?$_POST['h_date']:NULL;
if(count($dataChk)>0){ // ตรวจสอบว่ามีการเช็คเลือกมารายการมาอย่างน้ยอ 1 รายการหรือไม่ ถ้ามี
	foreach($dataChk as $k_chk=>$v_chk){ // วนลูปค่า array ที่ส่งมา โดยกำหนด $k_chk เป็น key และ $v_chk เป็น value
		// $k_chk ก็คือ key ของ array ซึ่งก็คือมีค่าเท่ากับ keyID ค่าที่อยู่ใน chkDel[xxxx] มาจากค่า name ของ checkbox
		// $v_chk ก็คือ value ของ array ซึ่งก็คือมี่ค่าเท่ากับ keyName มาจากค่า value ของ checkbxo
		// ตัวแปรที่เราจะได้ค่าเพิ่มเข้ามา ก็คือ keyDate อ้างอิงจาก keyID ได้ดังนี้
		$v_h_date = $data_hDate[$k_chk];  // ใช้ key เป้น keyID เช่นเดียวกันกับ checkbox
		// $v_h_date ก็คือ value ของ array ซึ่งมีค่าเท่ากับ keyDate มาจาก value ของ input hidden
		?>
        <tr>
            <td>
            <?php echo $v_chk?>
            </td>
        </tr>
        <?php
	}
}
?>
 
การใช้งาน input แบบ array โดยอาศัยการกำหนด key ให้เหมือนกันเพื่อส่งข้อมูลก็ประมาณนี้
ทำความเข้าใจเพิ่มเติม ก็จะประยุตก์ได้
 
ส่วนการนำค่า keyID ที่ได้ ไปดึงข้อมูลจากฐานข้อมูล เงื่อนไขประมาณว่าดึงเฉพาะค่าที่มี
keyID เท่ากับรายการที่เลือกเงื่อนไขก็จะเป็น OR ในคำสั่ง SQL หรือใช้ IN() แทนได้
เมื่อเราส่งค่ามาแบบ array เราสามารถใช้ คำสั่ง implode() เพื่อจัดรูปแบบค่าข้อมูลได้
สมมติเราส่งข้อมูลเป็น โดยใช้ checkbox เพียงอย่างเดียว โดยส่งค่า keyID ไป
แล้วไปดึงข้อมูล เพื่อแสดงค่า keyName ในตารางฐานข้อมูลอีกที 
 
<input type="checkbox" name="chkDel[<?=$objResult["keyID"]?>]" value="<?php echo $objResult["keyID"];?>">
 
การรับค่าและการใช้งานร่วมกับคำสั่ง SQL
 
<?php
$objConnect = mysql_connect("localhost","root","20091993") or die("Error Connect to Database");  
$objDB = mysql_select_db("edpex_db");  


$dataChk=(isset($_POST['chkDel']))?$_POST['chkDel']:NULL;
if(count($dataChk)>0){ // ตรวจสอบว่ามีการเช็คเลือกมารายการมาอย่างน้ยอ 1 รายการหรือไม่ ถ้ามี
	$chk_keyID=implode(",",$dataChk); // จัดรูปแบบค่า keyID ที่ส่งมาให้เป้นแบบ string เพื่อใช้ในคำสั่ง SQL
	// สมมติเรากดส่งค่า keyID มาสองตัว เป็นค่า 1 กับ 3 คำส่ัง implode() นี้ก้จะเอาทั้งสองค่ามาต่อกัน จะได้เป้น 1,3

		$strSQL = "
		SELECT * FROM relavantkf INNER JOIN keyfactor 
		ON relavantkf.keyID=keyfactor.keyID
		WHERE relavantkf.keyID IN($chk_keyID)
		";  
		$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");  
?>  
    <table id="myTbl" width="600" border="1" >  
      <tr id="myTr">  
        <th width="98"> <div align="center">keyName</div></th>  
        <th width="30"> <div align="center">Select factor </div></th>       
      </tr>  
    <?php  
    while($objResult = mysql_fetch_array($objQuery))  
    {  
    ?>  
      <tr>  
        <td><?php echo $objResult["keyName"];?></td>  
        <td align="center"><input type="checkbox" name="chkDel[]" value="<?php echo $objResult["keyName"];?>"></td>   
      </tr>  
    <?php  
    }  
    ?>  
    </table>  

<?php	
}
?>
 
ประมาณนี้เป้นแนวทาง


โดย:  Ninenik IP: 122.155.45.xxx วันที่: 01-03-2016
 ความคิดเห็นที่ 1
อันนี้คืออีกตารางค่ะ ถ้าเราส่งค่าvalue เป็น keyID จะสามารถโชว์ได้แบบนี้




แต่ถ้าหากส่งค่าvalue เป็น keyNameอีกตารางจะไม่สามารถโชว์ค่าที่เลือกได้เลย ควรแก้ที่ตรงไหนคะ
อันนี้คือโค้ดจากอีกตารางคะ
 

<body>
 <div id="progressbar"></div>
 <form name="frmMain" action="printConsilidate.php" method="post" >
<?php
$objConnect = mysql_connect("localhost","root","20091993") or die("Error Connect to Database");
$objDB = mysql_select_db("edpex_db");
$strSQL = "SELECT * FROM relavantkf INNER JOIN keyfactor ON relavantkf.keyID=keyfactor.keyID;";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
?>
 
 
<table id="myTbl" width="600" border="1" >
  <tr id="myTr">
   
    <th width="98"> <div align="center">keyName</div></th>
    <th width="30"> <div align="center">Select factor </div></th>
 
  </tr>
<?php
 
while($objResult = mysql_fetch_array($objQuery))
{
?>
  <tr>
    
    <td><?php echo $objResult["keyName"];?></td>
    <td align="center"><input type="checkbox" name="chkDel[]" value="<?php echo $objResult["keyName"];?>"></td>
 
  </tr>
 
<?php
}
?>
</table>


โดย:  Um0000um IP: 171.5.247.xxx วันที่: 01-03-2016 เวลา: 00:07:49