การส่งค่าตัวแปรมากกว่า 1 ค่า ข้ามหน้าทำยังไงคะ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา การส่งค่าตัวแปรมากกว่า 1 ค่า ข้ามหน้าทำยังไงคะ

การส่งค่าตัวแปรมากกว่า 1 ค่า ข้ามหน้าทำยังไงคะ
จากฟอร์มส่งค่า hidden itemID หลังการกด submit ไปยังหน้า save_str 

<form id="form1" name="form1" method="POST" action="save_str.php">
<input type="hidden" name="itemID"  value="<?=$itemID;?>" />

  <table width="598" height="393" border="1" align="center" cellpadding="3" cellspacing="3">
    
    <tr>
         <td width="115">Level</td>
    	 <td width="501">
     		<input type="radio" name="level" id="+" value="+" />+ 
      		<input type="radio" name="level" id="++" value="++" />++
    	</td>
    </tr>
    
    
    <tr>
   		<td>Item ref</td>
    	<td>
     	   <input type="text" name="itemref" id="itemref" />
   		</td>
  	</tr>
     
     
    <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <td>
        <?php 
		 $sql = " 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' ";
	  //  $sql = "SELECT unit.unitID ,unit.unitName FROM unit";
	    $objQuery = mysql_query($sql);
	    while($fetch = mysql_fetch_assoc($objQuery)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value="<?php echo $fetch["keyID"];?>"> <?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
        </td>
    </tr>
    
    
    <tr>
    	<td>Description</td>
     	<td><textarea name="strDescription" id="strDescription" cols="80" rows="5"></textarea></td>
    </tr>
 
  </table>
  <input type="submit" name="submit" value="Submit">
</form>
<?php   //save strength into db
$objConnect = mysql_connect("localhost","root","mn999336") or die("Error Connect to Database");  
$objDB = mysql_select_db("edpex_db");
$itemID = $_POST['itemID']; //get from hidden value from str_list 
if($_POST)
{
	 $strLevel   = $_POST['level'];
	 $strItemRef = $_POST['itemref'];
	 $strDescription = $_POST['strDescription'];
	 
	 $sql = "INSERT INTO strength(strLevel, strItemRef, strDescription,itemID) 
	 VALUES ('".$strLevel."','".$strItemRef."','".$strDescription."','".$itemID."') ";
	 $objQuery = mysql_query($sql);
	 
	 $strID = mysql_insert_id();
	 
	 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);
       } 
	   }  
?>
<?php  //fetch to show strength detail 
    include("db_connect_edpex.php");
   
    $sql = "SELECT * FROM strengthkf
            INNER JOIN strength ON strengthkf.strID = strength.strID
            INNER JOIN relevantkf ON strengthkf.keyID = relevantkf.keyID
            WHERE strength.strID = '$strID' ";

    $objQuery = mysql_query($sql)or die(mysql_error());
	//echo $objQuery;

    while($result = mysql_fetch_array($objQuery)){ ?>
	<form method="post">
	
	<table width="643" height="459" border="1" align="center" cellpadding="3" cellspacing="3">

  	<tr>
         	<td width="115">Level</td>
    		 <td width="501">
         
      <input type="radio" name="level" id="+" value="+" <?=($result["strLevel"]=='+' ? 'checked' : '')?> />+ 
      <input type="radio" name="level" id="++" value="++" <?=($result["strLevel"]=='++' ? 'checked' : '')?> />++
     	  	</td>
  	</tr>
  
  	<tr>
   			<td>Item ref</td>
    		<td> <?php echo $result["strItemRef"]; ?></td>
    </tr>
    
    
     
    <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <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)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>" <?=($result["keyID"] == $fetch["keyID"] ? 'checked' : '')?>  /> 
		<?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
     
        </td>
    </tr>
    
     
      <tr>
    	<td>Description</td>
     	<td><?php echo $result["strDescription"]; ?>
   	   </td>
    </tr>
    <?php
          }  
?>
  
</table>
 	<a href="edit_strength.php?strID=<?=$strID?>">Edit</a>

  <input type="submit" name="add" id="add" value="Add new Strength" />
</form>



save เสร็จให้แสดงหน้าที่ทำก่อนหน้านี้ และมีลิ้ง edit  โดยส่งค่า $strID ไปกับลิ้งด้วย
 




Um0000um 22-03-2016 00:13:03

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

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


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


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

 ความคิดเห็นที่ 1
แต่พอหน้า edit ขึ้น error Undefined index: itemID    
เพราะว่า เราส่งแค่ strID  กับลิ้ง edit ได้แค่ค่าเดียวอะคะ ต้องการจะส่งค่า itemID ด้วย จะทำยังไงคะ 
<?php  //fetch to show strength detail 
    include("db_connect_edpex.php");
	$itemID = $_POST['itemID']; //get from hidden value
   // $strID = $_GET['strID'];
   // echo $strID;
    $sql = "SELECT * FROM strengthkf
            INNER JOIN strength ON strengthkf.strID = strength.strID
            INNER JOIN relevantkf ON strengthkf.keyID = relevantkf.keyID
            WHERE strength.strID ='".$_GET['strID']."'";

    $objQuery = mysql_query($sql)or die(mysql_error());
	//echo $objQuery;

    while($result = mysql_fetch_array($objQuery)){ ?>
<form method="post">
<table width="643" height="459" border="1" align="center" cellpadding="3" cellspacing="3">

  <tr>
         <td width="115">Level</td>
    	 <td width="501">
         
      <input type="radio" name="level" id="+" value="+" <?=($result["strLevel"]=='+' ? 'checked' : '')?> />+ 
      <input type="radio" name="level" id="++" value="++" <?=($result["strLevel"]=='++' ? 'checked' : '')?> />++
     		
    	 </td>
  </tr>
  
  <tr>
   		<td>Item ref</td>
    	<td>
     	  <input type="text" name="strItemRef" size = "20" value= " <?php echo $result["strItemRef"]; ?>" />
   		</td>
  	</tr>
    
    
     
    <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <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)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>" <?=($result["keyID"] == $fetch["keyID"] ? 'checked' : '')?>  /> 
		<?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
         
      
        </td>
    </tr>

      <tr>
    	<td>Description</td>
     	<td> <textarea name="strItemRef" id="strDescription" cols="80" rows="5"  >  <?php echo $result["strDescription"]; ?></textarea> 
   	   </td>
    </tr>
    <?php
          }  
?>
</table>
 	<a href="edit_strength.php?strID=<?=$strID?>">Save</a>
</form>


um0000um 22-03-2016 00:17
 ความคิดเห็นที่ 2
ต้องส่งตัวแปร itemID แบบ GET เข้ามาในลิ้งค์ด้วย
 <a href="edit_strength.php?strID=<?=$strID?>&itemID=xxxxx">Edit</a>  
 
ส่วนตอนรับค่าก็เปลี่ยนจาก POST เป็น GET
 
 $itemID = $_GET['itemID']; //get from hidden value  


ninenik 22-03-2016
 ความคิดเห็นที่ 3
ได้แล้วค่ะ แต่อยากจะถามเรื่องการดึกค่า checkbox ขึ้นมาโชว์ 


กด submit จะขึ้นข้อมูลที่เรากรอกไป กับ ค่า checkbox ที่เราเลือกไป 

<form id="form1" name="form1" method="POST" action="save_str.php">
<input type="hidden" name="itemID"  value="<?=$itemID;?>" />

  <table width="598" height="393" border="1" align="center" cellpadding="3" cellspacing="3">
    
    <tr>
         <td width="115">Level</td>
    	 <td width="501">
     		<input type="radio" name="level" id="+" value="+" />+ 
      		<input type="radio" name="level" id="++" value="++" />++
    	</td>
    </tr>
    
    
    <tr>
   		<td>Item ref</td>
    	<td>
     	   <input type="text" name="itemref" id="itemref" />
   		</td>
  	</tr>
     
     
    <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <td>
        <?php 
		 $sql = " 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' ";
	  //  $sql = "SELECT unit.unitID ,unit.unitName FROM unit";
	    $objQuery = mysql_query($sql);
	    while($fetch = mysql_fetch_assoc($objQuery)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value="<?php echo $fetch["keyID"];?>"> <?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
        </td>
    </tr>
    
    
    <tr>
    	<td>Description</td>
     	<td><textarea name="strDescription" id="strDescription" cols="80" rows="5"></textarea></td>
    </tr>
 
  </table>
  <input type="submit" name="submit" value="Submit">
</form>


um0000um 22-03-2016 15:57
 ความคิดเห็นที่ 4
save และโชวค่า แต่ทีนี้พอโชวตรง checkbox มันโชวแค่ค่าเดียวอะคะ ทั้งๆที่เราเลือกไปสองค่า
<?php   //save strength into db
 include("db_connect_edpex.php");
$itemID = $_POST['itemID']; //get from hidden value from str_list 
//echo $itemID;
if($_POST)
{
	 $strLevel   = $_POST['level'];
	 $strItemRef = $_POST['itemref'];
	 $strDescription = $_POST['strDescription'];
	 
	 $sql = "INSERT INTO strength(strLevel, strItemRef, strDescription,itemID) 
	 VALUES ('".$strLevel."','".$strItemRef."','".$strDescription."','".$itemID."') ";
	 $objQuery = mysql_query($sql);
	 
	 $strID = mysql_insert_id();
	 
	 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);
       } 
	   }  
?>

<?php  //fetch to show strength detail 
    include("db_connect_edpex.php");
   
    $sql = "SELECT * FROM strengthkf
            INNER JOIN strength ON strengthkf.strID = strength.strID
            INNER JOIN relevantkf ON strengthkf.keyID = relevantkf.keyID
            WHERE strength.strID = '$strID' ";

    $objQuery = mysql_query($sql)or die(mysql_error());
	//echo $objQuery;

    while($result = mysql_fetch_array($objQuery)){ ?>
	<form method="post">
	
	<table width="643" height="459" border="1" align="center" cellpadding="3" cellspacing="3">

  	<tr>
         	<td width="115">Level</td>
    		 <td width="501">
         
      <input type="radio" name="level" id="+" value="+" <?=($result["strLevel"]=='+' ? 'checked' : '')?> />+ 
      <input type="radio" name="level" id="++" value="++" <?=($result["strLevel"]=='++' ? 'checked' : '')?> />++
     	  	</td>
  	</tr>
  
  	<tr>
   			<td>Item ref</td>
    		<td> <?php echo $result["strItemRef"]; ?></td>
    </tr>    
     
    <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <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)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>" <?=($result["keyID"] == $fetch["keyID"] ? 'checked' : '')?>  /> 
		<?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
     
        </td>
    </tr>

      <tr>
    	<td>Description</td>
     	<td><?php echo $result["strDescription"]; ?>
   	   </td>
    </tr>
    <?php
          }  
?>
  

</table>

 	<a href="edit_strength.php?strID=<?=$strID?>&itemID=<?=$itemID?>">Edit</a>

  <input type="submit" name="edit" id="edit" value="Add new Strength" />
</form>



um0000um 22-03-2016 16:00
 ความคิดเห็นที่ 5
ต้องไล่ดูว่า ในฐานข้อมูล บันทึกข้อมูลถูกต้องไหม
และก็ตารางที่ดึงมาแสดง มีความสัมพันธ์กันหรือเปล่า

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' 


ลองเอาคำสั่งนี้ไป ทดสอบใน phpmyadmin เปลี่ยนค่าตัวแปร $itemID เป็นตัวเลขจริงจากฐานข้อมูล
แล้วดูว่าค่ามาถูกต้องหรือไม่ ถ้าไม่ก็ต้องไปไล่ดูส่วนของการบันทึกข้อมูลล่า


ninenik 22-03-2016
 ความคิดเห็นที่ 6
ถูกแล้วค่ะ  ได้ตามนี้ 



อันนี้คือหน้าที่ทำ checkbox ก่อนดึง checkbox ที่เลือกมา มาโชว์ในหน้าให้ใส่ข้อมูลเข้าตารางคะ
<form name="selectReKey" action="str_list.php" method="post"> 
  <p>Select Item
   <select name="itemName" id="itemName">  
      <?php  
  	include("db_connect_edpex.php");
    $sql="SELECT itemreview.itemName,itemreview.itemID,itemreview.subRole
FROM projectmembers 
INNER JOIN project ON projectmembers.projectID = project.projectID 
INNER JOIN role ON projectmembers.roleID = role.roleID 
INNER JOIN member ON member.UserID = projectmembers.UserID 
INNER JOIN itemreview ON projectmembers.projectmembersID = itemreview.projectmembersID
WHERE project.projectID ='$projectID' AND member.UserID='$UserID'  ";

	$objQuery = mysql_query($sql)  or die(mysql_error()); 
	while($fetch=mysql_fetch_array($objQuery)){  
?>  
      <option value="<?= $fetch['itemID']?>">
       <?php  $itemID = $fetch['itemID']   ?>
       
      <?=$fetch['itemName']."".$fetch['subRole']?>
      </option>  
      <?php } 
  ?>      
    </select>
  </p>
  <table border="1">
    
    <tr>  
    <th> KeyID </th>
    <th width="100">Key Name</th>
    <th width="90">Select</th>
</tr>
<?php 
	$sql= "SELECT * FROM keyfactor";
	
	$objQuery = mysql_query($sql)  or die(mysql_error());
	 
	 while($objResult = mysql_fetch_array($objQuery))
	 { 
	 ?>
	<tr>
        <td><?php echo $objResult["keyID"]; ?></td>
        <td> <?php echo $objResult["keyName"];?></td>
         
        <td align="center">
      <input name= "keyID[]" type="checkbox" value = "<?php echo $objResult["keyID"];?>" >
      	</td>
    </tr>

<?php
}
?>	   
</table>
  <input type="Submit" name="Submit" id="Submit" value="Submit">
</form>


um0000um 22-03-2016 19:39
 ความคิดเห็นที่ 7
  แนะนำไม่ถูกเหมือนกัน ดูโครงสร้างไม่ค่อยออก


ninenik 22-03-2016
 ความคิดเห็นที่ 8




ต้องการดึงค่า จากตาราง strength มาโชว โดยโชวแค่ strLevel , strItemRef ,strDescription อ่าค่ะ แต่ตรง checkbox ให้ดึงจาก strengthKF มาโชว์  
คือก่อนหน้านี้ จะมีcheckbox เลือก keyID ที่มันเกี่ยวข้องกับ strength ที่เราจะทำก่อน  อันนี้จะเกบใน relevantKF  พอกด submit ก็จะให้ทำ strength โดยกรอกข้อมูล level , description ,... รวมทั้งโชวลิส checkbox ที่เราเลือกมาจากรอบแรก เพื่อให้มาเลือกรอบสองอีกที ให้เก็บใน strengthKF อ่าค่ะ 
โค้ดใน คห .4    ส่วนตรง
  1. <input type="checkbox" name="chkKey[]"   
  2.         value= "<?php $fetch["keyID"];?>" <?=($result["keyID"] == $fetch["keyID"] ? 'checked' : '')?>  />    อันนี้ syntax ถูกแล้วใช่ป่าวคะ 



um0000um 22-03-2016 21:54
 ความคิดเห็นที่ 9
 อันนี้ไม่เข้าใจจริงๆ ทั้งคำุามที่ถาม และก็ความสัมพันธ์ กับส่วนโค้ดที่มีปัญหา ยังไงลองพยายามดู


ninenik 23-03-2016
 ความคิดเห็นที่ 10
อ่าคะ สรุปว่าน่าจะมีปัญหาตรงโค้ดตอนที่สองที่ดึงค่าที่บันทึก(ที่เราติ้กๆ ในcheckbox) มาเทียบกับค่าที่โชว์ในโค้ดตอนแรกว่าตรงกันรึป่าว ถ้าตรงให้ติ้กถูก
<form action="check_save.php" method="POST" >

 <tr>
     	<td valign="top">Relavant Keyfactor</td>
        <td>
        <?php
		 include("db_connect_edpex.php");
		 $sql = "SELECT * from keyfactor";
	
	   	 $objQuery = mysql_query($sql);
	     while($fetch = mysql_fetch_assoc($objQuery)){ ?>
        <li>
        <input type="checkbox" name="chkKey[]" 
        value="<?php echo $fetch["keyID"];?>"> <?php echo $fetch["keyName"];?>
        </li>
        <?php  } ?>
        <input type="submit" name="submit" id="submit" value="Submit"></td>
    </tr>

</form>


<?php  
 include("db_connect_edpex.php");
if($_POST)
{
	 foreach($_POST['chkKey'] as $key=>$value)
	   {
		 $strID =5;
		 $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 
		 $sql = "SELECT DISTINCT strengthkf.keyID FROM strengthkf where strengthkf.strID =5";
	     $objQuery = mysql_query($sql);
	  
	     while($result = mysql_fetch_array($objQuery)){ 
		 echo $result["keyID"];  //ถ้าให้ สิ้นสุดแค่โค้ดนี้ จะโชวkeyID ทั้งหมดที่เราเลือกคะ เช่น 1 2 3 
         
         $sql1 = "SELECT * from keyfactor"; //ดึงค่าเพื่อเอามาเทียบ แต่ทีนี้มันcheck ให้เราแค่ค่าเดียวอะคะ ทั้งที่เลือกไป 3 ค่า (1 2 3) 
         $objQuery = mysql_query($sql1);
         while($fetch = mysql_fetch_assoc($objQuery)){ ?> 
         
         <li>  
        <input type="checkbox" name="chkKey[]" 
        value= "<?php $fetch["keyID"];?>" <?=($result["keyID"] == $fetch["keyID"] ? 'checked' : '')?>  />  //ตรงนี้คือให้เทียบค่า ถ้าตรงกับที่เราเลือกตอนแรกให้เช็คค่าไว้

        </li>  
         <?php } ?>
<?php } ?>
 
 
 


um0000um 23-03-2016 22:28
1






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