พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com | บล็อกอาหาร
PHP development / checkbox
deemo
deemo
Wed 17 May 2006 10:01:19

สวัสดีค่ะคุณ  administrator  มีปัญหาเกี่ยวกับการทำ checkbox ข้อมูลลง db ค่ะ หัวข้อมีอยู่ว่าคุณสามารถขับขี่ยานพาหนะใดได้บ้าง  ประกอบไปด้วย  ::จักรยาน  ::จักรยานยนต์ ::รถยนต์   ::อื่น ๆ  จะเป็น textfield ให้กรอก  ไม่ทราบว่าจะต้องแยก  field ของใครบองมันหรือว่าเก็บแบบรวมดีค่ะ  จึงจะทำให้ไม่มีปัญหาในภายหลังที่จะนำมาแก้ไข

Administrator
Wed 17 May 2006 10:26:14
ต้องแจ้งว่าอยู่ที่ requirement และการออกแบบโครงสร้างข้อมูลจริงๆครับ

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 มากครับ
deemo
deemo
Tue 6 Jun 2006 10:49:55

ทำแบบแยกฟิลด์ค่ะ  แต่เวลานำมาแสดงและทำการแก้ไขให้ มันแสดงติ๊กถูกหน้า เช็กบ็อก แล้วก็สามารถเซฟลงได้  แต่ที่ทำอยู่มันไม่ติ๊กถูกหน้าเช็คบ็อกค่ะ  แถมข้อมูลที่เคยทำไว้ก็ต้องติ๊กถูกใหม่ที่ทำการแก้ไขนะค่ะ ข้อมูลเก่ามันหายไปพร้อมกับเวลาเข้ามาหน้าแก้ไข  ต้องทำยังไงค่ะ

Administrator
Tue 6 Jun 2006 16:27:52
ถ้าเก็บเป็นแยก field เก็บเป็น 0,1 ก็นำมาเช็กตอนแสดงผลครับเช่น

<input type="checkbox" name="ability" value="bicycle"<? echo (($row["bicycle"] == 1)?" checked":""); ?>>

เืท่านี้ก็สามารถแสดงผลได้อย่างถูกต้องครับ ตอนทำการ update ก็นำข้อมูลนี้ไป update ด้วยครับ
deemo
deemo
Wed 7 Jun 2006 15:01:30
<input name="drive_skill1" type="checkbox" id="drive_skill1" value="รถจักรยานยนต์" <? echo (($data["รถจักรยานยนต์"] == 1)"checked":""); ?>>    ยังเหมือนเดิมค่ะ  ไม่โชว์ข้อมูลติ๊กถูกนำหน้า
Administrator
Wed 7 Jun 2006 17:28:25
<input name="drive_skill1" type="checkbox" id="drive_skill1" value="รถจักรยานยนต์" <? echo (($data["รถจักรยานยนต์"] == 1)?"checked":""); ?>>

คุณตกเครื่องหมายคำถามครับ จริงๆแล้วควรจะแสดงข้อความ error ด้วยนะครับ

ถ้ายังไม่ได้คุณต้องลองทำการ debug ค่าตัวแปร $data["รถจักรยานยนต์"] ว่ามีค่าเป็น 1 หรือไม่ครับ
deemo
deemo
Wed 7 Jun 2006 17:49:43

ลองทำการ debug ค่าตัวแปร $data["รถจักรยานยนต์"] ว่ามีค่าเป็น 1 หรือไม่  ทำยังไงค่ะไม่เข้าใจค่ะ เพราะข้อมูลที่เก็บลงอยู่ใน db มันเก็บว่ารถจักรยานยนต์เลยค่ะ  ไม่ได้เก็บค่า 0,1 รึเปล่าค่ะมันถึงไม่แสดง

Administrator
Wed 7 Jun 2006 18:22:14
ถ้าเป็นการเก็บแบบนั้น

<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
ถ้าเก็บใน field เดียวกันละค่ะ เวลาเรียกมาแสดงโดยที่มีการคลิกค้างอยู่ ต้องเขียนอย่างไรค่ะ
webmaster
webmaster
Fri 28 Mar 2008 00:36:54
เก็บใน field ใดๆก็สามารถใช้การตรวจสอบในลักษณะเดียวกันได้ครับ แต่ต้องประยุกต์นิดหน่อย
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login