ติดปัญหาเรื่องการส่งค่า Radio Button Group(Array) และ List Menu(
สวัสดีค่ะ คือนู๋ติดเรื่องการส่งค่า 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()
}
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 รายการ โดยมีปุ่ม submit และ reset อย่างละ 1 อัน
อย่างที่ 2 ถ้าฟอร์ม 1 ตัวต่อ 1 รายการ นั่งหมายความว่าจะแก้ไขได้ทีละรายการเท่านั้น
อย่างที่ 3 ถ้าเลือกฟอร์มเดียวกันกับทุกรายการแล้วเลือกใช้ input ต่างๆ แบบ array ให้ระบุ id ที่ชัดเจนกันการสับสนว่าค่าที่ส่งไปมันของใครหว่า เช่น id_box[0] id_box[1] แทน id_box[]
อย่างที่ 4 ต้องรับรู้ว่า checkbox รายการที่จะถูก submit เป็นรายการที่เลือกเท่านั้น ดังนั้น รายการที่ไม่ได้เลือกจะไม่ถูกส่งไป การบันทึกค่าต้องตรวจสอบผลอันนี้ด้วย
อย่างที่ 5 การรับค่า ควรใช้ foreach เพื่อให้การรับค่าแบบ array กระทำได้ง่าย
จริงๆแล้วโค้ดค่อยข้างสับสน ไม่เป็นระเบียบ และคาดเดาการทำงานยาก ถ้าจะแก้ไขใหห้ถูกต้องตามหลักการได้ก็จะเป็นการดี