ใช้check box เช็คข้อมูล แล้วนำข้อมูลที่เลือกมาแสดงด้านหลังให้เป็นdropdownlist แล้วค่อยกดบันทึก ตอนนำลงDBยังไงคะ

ถาม-ตอบ แนะนำไอเดียว โค้ดตัวอย่าง แนวทาง วิธีแก้ปัญหา ใช้check box เช็คข้อมูล แล้วนำข้อมูลที่เลือกมาแสดงด้านหลังให้เป็นdropdownlist แล้วค่อยกดบันทึก ตอนนำลงDBยังไงคะ

ใช้check box เช็คข้อมูล แล้วนำข้อมูลที่เลือกมาแสดงด้านหลังให้เป็นdropdownlist แล้วค่อยกดบันทึก ตอนนำลงDBยังไงคะ
ให้เช็คก้อน ชื่อ สกุล ดึงมาจากดาตาเบส

submit แล้วให้ไปอีกหน้า แสดงข้อมูลที่เลือก + drop down list


หลังจากกด submit ให้ insert into DB  
ตอนเอาลง DB   ต้องเก็บยังไงคะ โดยเอาค่า id จากดาตาเบสชื่อคนนั้นๆ  


Um0000um 58.8.155.xxx 27-02-2016 22:29:25

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

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


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


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

 ความคิดเห็นที่ 1
ดูเนื้อหานี้เป็นแนวทาง

แนวทางการส่งค่า จาก checkbox เพื่อบันทึกข้อมูลแบบ array ใน php 


หรือลำดับประมาณนี้ ส่งข้อมูล 3 ช่วง แบบ post

เลือกชื่อสมาชิก

<form name="form1" method="post" action="">

<table>
<?php
$sql="SELECT title,name,surname,user_id FROM tbl_user ORDER BY user_id ";
$qr = mysql_query($sql);
while($rs=mysql_fetch_array($qr)){
?>
<tr>
	<td>
    <?php
	$str_fullname=$rs['title']." ".$rs['name']." ".$rs['surname'];
	echo $str_fullname;
	?>
  </td>
	<td>    
      <input name="user_id[<?=$rs['user_id']?>]" type="checkbox"  value="<?=$str_fullname?>">
      </td>    
</tr>
<?php } ?>
</table>

</form>


กำหนด role

<form name="form2" method="post" action="">
<table>
<?php
$data_h_userID=(isset($_POST['user_id']))?$_POST['user_id']:NULL;  
if(count($data_h_userID)>0){  // ตรวจสอบ checkbox ว่ามีการเลือกมาอย่างน้อย 1 รายการหรือไม่
	foreach($data_h_userID as $key_userID=>$fullname){
?>
<tr>
	<td>
    <?=$fullname?>
        <input name="h_userID[<?=$key_userID?>]" type="hidden"  value="<?=$fullname?>">
    </td>
    <td>
      <select name="role_user[<?=$key_userID?>]" >
      <option value="1">Admin</option>
    </select>
    </td>
</tr>
<?php
	}	
}
?>
</table>
</form>



วนลูปบันทึกลงฐานข้อมูล

<?php
$data_h_userID=(isset($_POST['h_userID']))?$_POST['h_userID']:NULL;
$data_h_roleID=(isset($_POST['role_user']))?$_POST['role_user']:NULL;
if(count($data_h_userID)>0){  // ตรวจสอบ array ของ hidden field ที่่ส่งค่ามา
	foreach($data_h_userID as $key_userID=>$fullname){
		// $fullname  คือ  ชื่อเต็มของสมาชิก ถ้าต้องการบันทึกก็ใช้ตัวแปรนี้ได้เลย
		//  $key_userID  คือ id ของสมาชิกที่เราเลือกมา
		// $data_h_roleID[$key_userID]  คัวตัวแปรสำหรับบันทึกค่าของ role ของแต่และคน
		// วนลูปบันทึกข้อมูล
			$sql="
			INSERT INTO .......
			";
			$qr=mysql_query($sql);
	}	
}
?>




ninenik 122.155.43.xxx 28-02-2016
 ความคิดเห็นที่ 2
หลังจากติ้กมา แล้วกด submit 
<?=$fullname?> ไม่ออกเลยค่ะ แต่ว่าdrop down list มาตามจำนวนที่ติ้ก
   
แล้ว
 foreach($data_h_userID as $key_userID=>$fullname) อันนี้ตามที่เข้าใจคือ เอา UserID มาเก็บในตัวแปร $data_h_userID 
แล้ว copy ค่าใส่ $key_userID ให้แสดงชื่อใส่ตัวแปร $fullname อย่างนี้รึป่าวคะ
 


um0000um 171.5.246.xxx 28-02-2016 17:04
 ความคิดเห็นที่ 3
ได้แล้วค่ะ ขอบคุณมากๆค่ะ 


um0000um 171.5.246.xxx 28-02-2016 18:07
 ความคิดเห็นที่ 4
ถ้าในกรณีที่ เค้าไม่เลือก drop down list เราจะเช็คยังไง ตรงไหนของโค้ดคะ 
แล้วก็ text field  อื่นๆด้วย 


um0000um 171.5.246.xxx 28-02-2016 21:31
 ความคิดเห็นที่ 5
ขอถามอีกอย่างค่ะ ถ้าจะเอาข้อมูล ที่เราเลือกคน แล้วก็ เลือก role มะกี้ มาแสดง  โดยดึงจากดาตาเบส โดยให้ดึงเอา projectID อันล่าสุดมา เพราะว่า process คือ สร้างโปรเจค กรอกใส่ฟอร์มโดยมีpk=  projectID แล้ว เลือกคนแบบรูปด้านบน แล้วค่อยเลือก role แบบด้านบน 
SELECT * FROM projectmembers 
		INNER JOIN member ON projectmembers.UserID = member.UserID
        INNER JOIN role   ON projectmembers.roleID = role.roleID
        ORDER BY projectID desc limit 0,10
มันดึงมาก็จริงค่ะ แต่ว่ามันอาจจะดึงคนมาเกิน เช่น สร้างโปรเจคเสร็จ projectID =10 >เลือกคนมา 8คน >กำหนด role เสร็จ >ก็ให้โชว์ 8 คนนั้นๆ  แต่ถ้าแบบนี้มันโชวมา 10 คนเลยค่ะ คือดึง projectID=9 มาด้วย  จะทำยังไงให้มันดึงแค่อันล่าสุดมาคะ 


um0000um 171.5.246.xxx 28-02-2016 23:13
 ความคิดเห็นที่ 6
น่าจะคิวรี่ดึงค่าล่าสุดของ projectID มาก่อน

$projectID=mysql_result(mysql_query("
SELECT projectID FROM projectmembers ORDER BY projectID DESC LIMIT 1
"),0,0);


แล้วเอาค่า $projectID ไปกำหนด ในคำส่ังคิวรี่แสดงข้อมูลล่าสุด เพิ่มไปใช้เงื่อนไข WHERE

SELECT * FROM projectmembers   
        INNER JOIN member ON projectmembers.UserID = member.UserID  
        INNER JOIN role   ON projectmembers.roleID = role.roleID  
        WHERE projectID='$projectID'
        ORDER BY projectID desc limit 0,10  


ninenik 183.88.84.xxx 29-02-2016
 ความคิดเห็นที่ 7
ได้แล้วค่ะ แต่ถ้าเราจะให้เพิ่ม ปุ่มลบคน เพิ่มมาขวามือของ role แบบนี้ ต้องทำยังไงคะ โดยที่มันไม่ได้ไปลบที่ ดาตาเบส
 


um0000um 58.8.155.xxx 02-03-2016 23:12
 ความคิดเห็นที่ 8
ใช่ jquery ช่วย ปรับปุ่มลบประมาณนี้ โดยกำหนด ชื่อ css class เพื่อใช้อ้างอิงใน jquery

<a href="javascript:void(0);" class="del_role">Del</a>


คำสั่ง jquery ลบแถวของปุ่มลบที่กด

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>   
<script type="text/javascript">
$(function(){
	$(".del_role").on("click",function(){
		$(this).parents("tr:first").remove();
	});	
});
</script>


<table class="table">
	<tr>
    	<td>รายการที่ 1 </td>
        <td><a href="javascript:void(0);" class="del_role">Del</a></td>
    </tr>
	<tr>
    	<td>รายการที่ 2 </td>
        <td><a href="javascript:void(0);" class="del_role">Del</a></td>
    </tr>
	<tr>
    	<td>รายการที่ 3 </td>
        <td><a href="javascript:void(0);" class="del_role">Del</a></td>
    </tr>
	<tr>
    	<td>รายการที่ 4 </td>
        <td><a href="javascript:void(0);" class="del_role">Del</a></td>
    </tr>            
</table>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>   
<script type="text/javascript">
$(function(){
	$(".del_role").on("click",function(){
		// จากปุ่มที่ถูกกดนี้ เลื่อนลำดับไปหาแถว tr ตัวแรก    แล้วลบ 
		$(this).parents("tr:first").remove();
	});	
});
</script>


ตัวอย่าง

รายการที่ 1 Del
รายการที่ 2 Del
รายการที่ 3 Del
รายการที่ 4 Del




ninenik 122.155.45.xxx 02-03-2016
 ความคิดเห็นที่ 9
ได้แล้วค่ะ  จะตั้งกระทู้ใหม่ แต่ไม่ขึ้น  ถ้าเรากดไปที่ Project name:test1 แล้วให้มันลิ้งหน้าไปแสดงรายละเอียดของโปรเจคนั้น ต้องใช้พวก session ป่าวคะ

$strSQL = "SELECT * FROM member WHERE UserID = '".$_SESSION['UserID']."' ";
	$objQuery = mysql_query($strSQL);
	
     while($result = mysql_fetch_array($objQuery))
	 
	 $UserID = $result["UserID"]; 
	 
ดึง UserID มาก่อน แล้วค่อยให้ดึงค่าโปรเจคที่ยูสเซอนั้นๆต้องทำ  


um0000um 58.8.155.xxx 04-03-2016 01:33
 ความคิดเห็นที่ 10
แล้วค่อยมาคิวรี่หาชื่อโปรเจค 

<?php //Show Project lists

$sql= "SELECT * FROM projectmembers 
INNER JOIN project ON projectmembers.projectID = project.projectID  
INNER JOIN role ON projectmembers.roleID = role.roleID
WHERE UserID = '$UserID'";
$result=mysql_query($sql);

?>

<?php
while($fetch = mysql_fetch_assoc($result)){ 
?>
<a href="#">Project Name : <?php echo $fetch['projectName']; ?></a>  
</p>
<br />
<?php }
?>


um0000um 58.8.155.xxx 04-03-2016 01:35
1






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