A-AA+then

ติดปัญหาเรื่องการส่งค่า Radio Button Group(Array) และ List Menu(

8,595

สวัสดีค่ะ คือนู๋ติดเรื่องการส่งค่า Radio Button Group(Array) และ List Menu(Array) ทำมาทั้งวันแล้ว T T พี่ๆช่วยดู code นีให้หน่อยค่ะ

โครงสร้างตาราง `box`
--

CREATE TABLE `box` (
  `id_box` int(11) NOT NULL auto_increment,
  `no_menu` varchar(50) NOT NULL,
  `status_box` varchar(50) NOT NULL,
  PRIMARY KEY  (`id_box`)
)

INSERT INTO `box` VALUES(14, '2', 'NO');
INSERT INTO `box` VALUES(15, '2', 'YES');

------------------------------------------

manage_box.php


<script type="text/javascript">
function send1(frm) {
  frm.action = "edit-all.php" 
  frm.submit()
}

function send2(frm) {
  frm.action = "delete-all.php" 
  frm.submit()
}
</script>

<form id="form1" onSubmit="return check(this)" name="form1" method="post" >
<input type="submit" value="Edit" onclick="send1(form1)" />
<input type="submit" value="Delete" onclick="send2(form1)" />

<? 

 $sql="select *  from box";
 $result =mysql_db_query($db,$sql);
 while ($record=mysql_fetch_array($result) ) {
 $id_box=$record[id_box];
 ?>

<input type="checkbox" name="chk_this[]" value="<?=$id_box?>"/>
<?
}
?>

</form>
-------------------------------
edit_all.php
<form action="edit-all2.php" method="post" >
<?
for($i=0;$i<count($_POST["chk_this"]);$i++)
{
$id_box=$_POST["chk_this"]["$i"];
$sql="select * from box where id_box='$id_box' ";
$result=mysql_db_query($db,$sql);
$record=mysql_fetch_array($result);
$sbox=$record[status_box];
if($sbox=="YES") {
 $sY="checked";
} else {
 $sN="checked";
}
$menu=$record1[no_menu];
if($menu=="1"){
 $menu1="selected";
}else if($menu=="2"){
 $menu2="selected";
}else if($menu=="3"){
 $menu3="selected";
}else if($menu=="4"){
 $menu4="selected";
}else {
$menu5="selected";
}
?>

No. Menu
<select name="no_menu[]" id="no_menu[]">
      <option value="1" <?=$menu1?>>01</option>
      <option value="2" <?=$menu2?>>02</option>
      <option value="3" <?=$menu3?>>03</option>
      <option value="4" <?=$menu4?>>04</option>
      <option value="5" <?=$menu5?>>05</option>
</select>
Published
<input type="radio" name="status_box[]" id="radio" value="NO" <?=$sN?>/
>
No
  <input name="status_box[]" type="radio" id="radio" value="YES" <?=$sY?>
/>
Yes
<input name="id_box[]" type="hidden" value=" <?=$id_box?>
" />
<input type="submit"  value="Submit" /><input name="" type="reset" />
<?
}
?>

</form>


-------------------------------
edit-all2.php
<?
for($i=0;$i<count($_POST["id_box"]);$i++){
 
 $idbox=$_POST["id_box"]["$i"];
 $nomenu=$_POST["no_menu"]["$i"];
 $statusbox=$_POST["status_box"]["$i"];
 $sql="update box set name_box='$namebox', stutus_box='$statusbox' where id_box='$idbox'";
 $result=mysql_db_query($db,$sql);
  
}
 header("Location: manage_box.php");
?>

ช่วยดูให้หน่อยคร่า แก้มานานแล้วตอนนี้ยังไม่ได้เลย

1 ความคิดเห็น

ผิดหลายเรื่อง ลองแก้ไปเป็นเรื่องๆ นะ

อย่างแรกที่เห็นคือผิดที่ฟอร์ม ฟอร์ม 1 ตัว ต่ิอ 1 รายการ โดยมีปุ่ม submit และ reset อย่างละ 1 อัน

อย่างที่ 2 ถ้าฟอร์ม 1 ตัวต่อ 1 รายการ นั่งหมายความว่าจะแก้ไขได้ทีละรายการเท่านั้น

อย่างที่ 3 ถ้าเลือกฟอร์มเดียวกันกับทุกรายการแล้วเลือกใช้ input ต่างๆ แบบ array ให้ระบุ id ที่ชัดเจนกันการสับสนว่าค่าที่ส่งไปมันของใครหว่า เช่น id_box[0] id_box[1] แทน id_box[]

อย่างที่ 4 ต้องรับรู้ว่า checkbox รายการที่จะถูก submit เป็นรายการที่เลือกเท่านั้น ดังนั้น รายการที่ไม่ได้เลือกจะไม่ถูกส่งไป การบันทึกค่าต้องตรวจสอบผลอันนี้ด้วย

อย่างที่ 5 การรับค่า ควรใช้ foreach เพื่อให้การรับค่าแบบ array กระทำได้ง่าย

จริงๆแล้วโค้ดค่อยข้างสับสน ไม่เป็นระเบียบ และคาดเดาการทำงานยาก ถ้าจะแก้ไขใหห้ถูกต้องตามหลักการได้ก็จะเป็นการดี
1
^