Wed 17 May 2006 10:01:19
สวัสดีค่ะคุณ administrator มีปัญหาเกี่ยวกับการทำ checkbox ข้อมูลลง db ค่ะ หัวข้อมีอยู่ว่าคุณสามารถขับขี่ยานพาหนะใดได้บ้าง ประกอบไปด้วย ::จักรยาน ::จักรยานยนต์ ::รถยนต์ ::อื่น ๆ จะเป็น textfield ให้กรอก ไม่ทราบว่าจะต้องแยก field ของใครบองมันหรือว่าเก็บแบบรวมดีค่ะ จึงจะทำให้ไม่มีปัญหาในภายหลังที่จะนำมาแก้ไข
1. ถ้าเป็นแบบสอบถามชั่วคราวหรือไม่มีความสำคัญในระยะยาว
อาจจะออกแบบเป็น field มารองรับแต่ละข้อมูลเลยก็ได้ครับ เช่น
bicycle tinyint(1),
motorcycle tinyint(1),
car tinyint(1),
other varchar(50)
ถ้ามีการเลือกอันไหนก็ insert ลงในช่องนั้นๆครับ
2. ถ้าเป็นแบบประวัติข้อมูลลูกค้า หรือมีความสำคัญที่จะใช้งานในระยะยาว อาจจะทำการออกแบบเป็นอีก table เพื่อมาเก็บข้อมูลเหล่านี้ครับ เช่น
#users
-userid int auto_increment (PK),
-username varchar(100)
#abilities
-abilityid int auto_increment (PK),
-abilityname varchar(100)
#user_ability
-userid (FK)
-abilityid (FK)
เวลา insert ก็ทำการ map ข้อมูลจาก #user_ability เอาครับ ซึ่งถ้าเป็นไปได้แบบที่ 2 จะสร้างความยุ่งยากนิดหน่อยแต่ useful มากครับ
Tue 6 Jun 2006 10:49:55
ทำแบบแยกฟิลด์ค่ะ แต่เวลานำมาแสดงและทำการแก้ไขให้ มันแสดงติ๊กถูกหน้า เช็กบ็อก แล้วก็สามารถเซฟลงได้ แต่ที่ทำอยู่มันไม่ติ๊กถูกหน้าเช็คบ็อกค่ะ แถมข้อมูลที่เคยทำไว้ก็ต้องติ๊กถูกใหม่ที่ทำการแก้ไขนะค่ะ ข้อมูลเก่ามันหายไปพร้อมกับเวลาเข้ามาหน้าแก้ไข ต้องทำยังไงค่ะ
<input type="checkbox" name="ability" value="bicycle"<? echo (($row["bicycle"] == 1)?" checked":""); ?>>
เืท่านี้ก็สามารถแสดงผลได้อย่างถูกต้องครับ ตอนทำการ update ก็นำข้อมูลนี้ไป update ด้วยครับ
Wed 7 Jun 2006 15:01:30
คุณตกเครื่องหมายคำถามครับ จริงๆแล้วควรจะแสดงข้อความ error ด้วยนะครับ
ถ้ายังไม่ได้คุณต้องลองทำการ debug ค่าตัวแปร $data["รถจักรยานยนต์"] ว่ามีค่าเป็น 1 หรือไม่ครับ
Wed 7 Jun 2006 17:49:43
ลองทำการ debug ค่าตัวแปร $data["รถจักรยานยนต์"] ว่ามีค่าเป็น 1 หรือไม่ ทำยังไงค่ะไม่เข้าใจค่ะ เพราะข้อมูลที่เก็บลงอยู่ใน db มันเก็บว่ารถจักรยานยนต์เลยค่ะ ไม่ได้เก็บค่า 0,1 รึเปล่าค่ะมันถึงไม่แสดง
<input name="drive_skill1" type="checkbox" id="drive_skill1" value="รถจักรยานยนต์" <? echo (($data["field_name"] == "รถจักรยานยนต์")?"checked":""); ?>>
การทำงานจะเหมือนกับ
if($data["field_name"] == "รถจักรยานยนต์"){
echo "checked";
}else{
echo "";
}
เป็นการลดรูปครับ
Thu 27 Mar 2008 23:33:49
Fri 28 Mar 2008 00:36:54

















