หน้า 1 จากทั้งหมด 1

วิธีการเขียน INSERT, UPDATE, DELETE ในหน้าฟอร์มเดียวกัน

โพสต์แล้ว: 20/05/2014 7:32 pm
โดย thatsawan
วิธีการเขียน INSERT, UPDATE, DELETE ในหน้าฟอร์มเดียวกัน ในการพัฒนา phpBB
โดยจะมีหน้า แสดงเมนูไปยังฟอร์มบันทึก,แสดงข้อมูล แก้ไข,ลบ,
->เมื่อคลิก ปุ่ม จะให้แสดงฟอร์ม บันทึกข้อมูล
1) ดึงความสามารถของ phpBB มาใช้งาน
- ป้องกันการเข้าถึงไฟล์
- ประกาศ Class
- สร้าง function
- ดึงไฟล์ template เข้ามาใช้งาน แสดงฟอร์ม รับข้อมูล , แสดง ข้อมูลจากฐานข้อมูล, เมนู เพิ่ม,แก้ไข, ลบ
- ดึงไฟล์ภาษาเข้ามาใช้งาน

2) สร้างฟอร์มในการรับข้อมูลTemplate
- ฟอร์ม บันทึกข้อมูล -> ส่งค่า action = {u_action} จะครอบด้วย
<!-- IF SHOWFORM --> ฟอร์ม บันทึกข้อมูล <!-- ENDIF -->
- ฟอร์ม ปุ่ม เพื่อสร้างปุ่มไปยัง -> ฟอร์มบันทึกข้อมูล -> action = {u_action}
<form action="{U_ACTION}" method="post">
<input name="submode" value="{SUBACCTION}" type="hidden" />
<input name="submit" type="submit" value="add New Record" />
</form>
- แสดงข้อมูลจากฐานข้อมูล
จะครอบด้วย
<!-- IF SHOWLIST --> ฟอร์มปุ่ม , list ข้อมูลที่แสดงจากฐานข้อมูล <!-- ENDIF -->
(โดยเมื่อมีการเข้าหน้าเพจมาจะแสดงเฉพาะ List ข้อมูลจากฐานข้อมูล, ฟอร์มค้นหา, ปุ่ม ไม่แสดงฟอร์มบันทึกข้อมูล โดยการใช้ IF-ENDIF)

3) การสร้าง Insert,update,delete (acp_mod_ranks.php)
- ประกาศรับค่าจากฟอร์ม ในครั้งแรก กำหนดการแสดงผลใน Template

โค้ด: เลือกทั้งหมด

$template->assign_vars(array(
    'U_ACTION'           => $this->u_action,
    'SHOWFORM'         => false,
    'SHOWLIST'           => true,        
                      )); 
assign_vars = การกำหนดค่าตัวแปร
'U_ACTION' = การรับ action ที่ส่งมาจากฟอร์ม
'SHOWFORM' = ในการเข้า หน้าเพจ ไม่ให้แสดง ฟอร์ม บันทึกข้อมูล
'SHOWLIST' = ในการเข้า หน้าเพจให้แสดง list ข้อมูลจากฐานข้อมูล
- เขียน คำสั่งตรวจสอบการจะให้มีการทำงานอะไร เมื่อได้รับค่ามา ด้วย

โค้ด: เลือกทั้งหมด

switch ($action)        
        {
case :
break;
    }
default:
break; 
}
$action = การรับค่าจากปุ่มโดยเก็บในตัวแปร $action
$action = request_var('submode', ''); เขียนไว้นอก switch
'submode' = ชื่อปุ่มที่ส่งค่า hidden เข้ามา
- ก่อนการคลิกปุ่มมายังหน้าฟอร์ม เราจะต้องมีการประกาศตัวแปร

โค้ด: เลือกทั้งหมด

default:
     $template->assign_vars(array(
        'U_ACTION'             => $this->u_action,
        'SUBACCTION'         =>'add',
        ));                        
break; 
assign_vars = การกำหนดค่าตัวแปร
'U_ACTION' = การรับ action ที่ส่งมาจากฟอร์ม (ที่สร้างปุ่ม NEW)
'SUBACCTION' = สร้างตัวแปร เพื่อส่งให้ hidden เปลี่ยน เป็น add ตัวแปรที่จะบอกให้ ปุ่ม รู้ว่า เมื่อมีการคลิก จะเข้า เงื่อนไข add (case ต่อไป เป็นค่า default )
- เมื่อคลิกปุ่ม add New Record เข้ามา --> มายังหน้าฟอร์ม (hidden ที่ส่งมา จะเป็น add)

โค้ด: เลือกทั้งหมด

<input  name="submode"  value="{SUBACCTION}" type="hidden" />
<input name="submit"  type="submit"  value="add New Record" />
เราจะกำหนด เงื่อนไข คือ :: ให้แสดงฟอร์มกรอกบันทึกข้อมูล

โค้ด: เลือกทั้งหมด

case 'add':
                    $template->assign_vars(array(
                        'U_ACTION'        => $this->u_action,
                        'SUBACCTION'         =>'insert',
                        'SHOWFORM'        => true,
                        'SHOWLIST'         => false,        
                    ));
                break; 
assign_vars = การประกาศตัวแปร
case 'add' = เมื่อมีการคลิกที่ปุ่มเมนูจาก add New Record
'U_ACTION' = รับค่า action = {u_action} จากฟอร์มที่สร้างปุ่ม !!
'SUBACCTION' = สร้างตัวแปร เพื่อส่งให้ hidden เปลี่ยน เป็น insert
ตัวแปรที่จะบอกให้ ปุ่ม รู้ว่า เมื่อมีการคลิก จะเข้า เงื่อนไข insert (case ต่อไป)
'SHOWFORM' = ในการเข้า หน้าเพจให้แสดง ฟอร์ม บันทึกข้อมูล
'SHOWLIST' = ในการเข้า หน้าเพจไม่แสดง list ข้อมูลจากฐานข้อมูล

- เมื่อมีการประกาศตัวแปร เราก็ต้องสร้าง hidden เพื่อรับค่าตัวแปร ที่ฟอร์มบันทึกข้อมูล
<input type="hidden" name="submode" value="{SUBACCTION}" />
เมื่อกรอกข้อมูลในฟอร์ม คลิกที่ปุ่ม submit จะเข้าสู่ case : insert ให้มีการทำงาน insert ข้อมูล

โค้ด: เลือกทั้งหมด

case 'insert':      
// คำสั่งในการ insert ข้อมูล
break; 
- สร้าง list แสดงข้อมูลจากฐานข้อมูล และ สร้าง link เพื่อ update, delete ข้อมูล
ให้ดึงข้อมูลจากฐานข้อมูลมาแสดงในรูปแบบ phpBB (จะเขียนใน default)

โค้ด: เลือกทั้งหมด

default:
//ดึงข้อมูลมาแสดง
'EDIT'    => $this->u_action . '&submode=edit&id=' . $row['rank_id'],
'DEL'    => $this->u_action . '&submode=delete&id=' . $row['rank_id']            
break; 
'EDIT' = ส่งค่า edit = rand_id
'DEL' = ส่งค่า delete = rand_id
- เมื่อมีการส่งค่า edit จาก link เราก็จะทำการรับค่า

โค้ด: เลือกทั้งหมด

case 'edit' :              
        // คำสั่งในการแสดงผล ในฟอร์ม 
$template->assign_vars(array(
        'SUBACCTION'         => 'update',        
        'SHOWFORM'          => true,
        'SHOWLIST'         => false,        
            ));         
                break; 
'SUBACCTION' = สร้างตัวแปร เพื่อส่งให้ hidden เปลี่ยน เป็น 'update' ตัวแปรที่จะบอกให้ ปุ่ม รู้ว่า เมื่อมี
การคลิก จะเข้า เงื่อนไข 'update' (case ต่อไป)
'SHOWFORM' = ในการเข้า หน้าเพจให้แสดง ฟอร์ม บันทึกข้อมูล
'SHOWLIST' = ในการเข้า หน้าเพจไม่แสดง list ข้อมูลจากฐานข้อมูล
- การ update เมื่อแก้ไข ข้อมูล ทำการคลิกปุ่ม ก็จะมา เข้า เงื่อนไข case : update

โค้ด: เลือกทั้งหมด

case update:              
        // คำสั่งในการ update
        break;  

- เมื่อมีการส่งค่า del จาก link เราก็จะทำการรับค่า

โค้ด: เลือกทั้งหมด

case delete     :              
        // คำสั่งในการ delete     
        break;