ตัวอย่างโค้ด พร้อมคำอธิบายต่อไปนี้ เป็นแนวทางอย่างง่ายเพื่อศึกษา
การทำงานของระบบหมวดหลักหมวยย่อย ที่มีความสัมพันธ์กัน โดยในตัวอย่าง
จะเป็นการสมมติโดยใช้ตัวแปร array ที่เป็น ตัวแปร session
สามารถเป็นแนวทางสำหรับใช้ประยุกต์ กรณีใช้กับฐานข้อมูล ที่มีความสัมพันธ์
หมวดหลัก และหมวดย่อยได้
ก่อนศึกษารายละเอียดด้านใน ให้สร้างไฟล์ php แล้ว copy โค้ดต่อไปนี้
ไปทดลองรันดูการทำงาน ทั้ง
- การเพิ่ม ลบ แก้ไข หมวดหลัก
- การคลิกเข้าไปดูรายการในหมวดหลัก
- การเพิ่ม ลบ แก้ไข หมวดย่อย
โต้ด php สำหรับทดสอบ ใช้ session ทดสอบดูภาพรวม
ไฟล์ category.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <?php session_start(); if (!isset( $_SESSION [ 'data_temp' ])){ $_SESSION [ 'data_temp' ]=null; } if (isset( $_POST [ 'reset_btn' ])){ unset( $_SESSION [ 'data_temp' ]); header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } if (isset( $_GET [ 'deleteID' ])){ unset( $_SESSION [ 'data_temp' ][ 'topic' ][ $_GET [ 'deleteID' ]]); $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'deleteID' ]]=null; header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } if (isset( $_POST [ 'submit_btn' ]) && $_POST [ 'submit_btn' ]!= "" ){ if (isset( $_GET [ 'editID' ]) && $_GET [ 'editID' ]!= "" ){ if (isset( $_POST [ 'data1' ]) && $_POST [ 'data1' ]!= "" ){ $_SESSION [ 'data_temp' ][ 'topic' ][ $_GET [ 'editID' ]]= $_POST [ 'data1' ]; header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } } else { if (isset( $_POST [ 'data1' ]) && $_POST [ 'data1' ]!= "" ){ $_SESSION [ 'data_temp' ][ 'topic' ][]= $_POST [ 'data1' ]; $_SESSION [ 'data_temp' ][ 'data' ][]=null; header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } } } ?> <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Document</title> </head> <body> <div style= "margin:auto;width:80%;" > <?php $more_action = "" ; $edit_data = "" ; if (isset( $_GET [ 'editID' ])){ $more_action = "?editID=" . $_GET [ 'editID' ]; $edit_data = $_SESSION [ 'data_temp' ][ 'topic' ][ $_GET [ 'editID' ]]; } ?> <br><br> <form action= "<?=$more_action?>" method= "post" > <input type= "text" name= "data1" id= "data1" value= "<?=$edit_data?>" > <input type= "submit" name= "submit_btn" value= "Save" > <input type= "submit" name= "reset_btn" value= "Clear" > </form> <?php if (!isset( $_GET [ 'editID' ])){?> <ul> <?php if (isset( $_SESSION [ 'data_temp' ][ 'topic' ]) && count ( $_SESSION [ 'data_temp' ][ 'topic' ])>0){ foreach ( $_SESSION [ 'data_temp' ][ 'topic' ] as $k => $v ){ ?> <li> <?= $k ?>. <a href= "view.php?viewID=<?=$k?>" ><?= $v ?></a> <br> <a href= "?editID=<?=$k?>" >Edit</a> <a href= "?deleteID=<?=$k?>" > Delete </a> <hr style= "border:0px;border-bottom:1px solid #EFEFEF;" > </li> <?php } } ?> </ul> <?php } ?> </div> </body> </html> |
ไฟล์ view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <?php session_start(); if (!isset( $_SESSION [ 'data_temp' ])){ $_SESSION [ 'data_temp' ]=null; } if (isset( $_GET [ 'sub_deleteID' ])){ unset( $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'viewID' ]][ $_GET [ 'sub_deleteID' ]]); header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } if (isset( $_POST [ 'submit_btn' ]) && $_POST [ 'submit_btn' ]!= "" ){ if (isset( $_GET [ 'sub_editID' ]) && $_GET [ 'sub_editID' ]!= "" ){ if (isset( $_POST [ 'data2' ]) && $_POST [ 'data2' ]!= "" ){ $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'viewID' ]][ $_GET [ 'sub_editID' ]]= $_POST [ 'data2' ]; header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } } else { if (isset( $_POST [ 'data2' ]) && $_POST [ 'data2' ]!= "" ){ $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'viewID' ]][]= $_POST [ 'data2' ]; header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } } } ?> <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Document</title> </head> <body> <div style= "margin:auto;width:80%;" > <!-- จำลองเป็นหน้ารายละอียด--> <?php $more_action = "" ; $edit_data2 = "" ; if (isset( $_GET [ 'sub_editID' ])){ $more_action = "&sub_editID=" . $_GET [ 'sub_editID' ]; $edit_data2 = $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'viewID' ]][ $_GET [ 'sub_editID' ]]; } ?> <form action= "?viewID=<?=$_GET['viewID']?><?=$more_action?>" method= "post" > <a href= "category.php" > Back : > </a> <?= $_SESSION [ 'data_temp' ][ 'topic' ][ $_GET [ 'viewID' ]]?> <br><br> หมวดย่อย <input type= "text" name= "data2" id= "data2" value= "<?=$edit_data2?>" > <input type= "submit" name= "submit_btn" value= "Save" > </form> <?php if (!isset( $_GET [ 'sub_editID' ])){?> <ul> <?php $ses_data2 = $_SESSION [ 'data_temp' ][ 'data' ][ $_GET [ 'viewID' ]]; if ( is_array ( $ses_data2 ) && count ( $ses_data2 )>0){ foreach ( $ses_data2 as $k => $v ){ ?> <li> <?= $k ?>. <?= $v ?><br> <a href= "?viewID=<?=$_GET['viewID']?>&sub_editID=<?=$k?>" >Edit</a> <a href= "?viewID=<?=$_GET['viewID']?>&sub_deleteID=<?=$k?>" > Delete </a> <hr style= "border:0px;border-bottom:1px solid #EFEFEF;" > </li> <?php } } ?> </ul> <?php } ?> </div> </body> </html> |
ต่อไปจะเป็นกรณีการใช้งานกับฐานข้อมูล
โดยเราจะใช้วิธีการเชื่อมต่อแบบ
โดยเราจะใช้วิธีการเชื่อมต่อแบบ
mysqli แทน mysql ธรรมดา เพื่อรองรับในอนาคต
ดาวน์โหลดไฟล์ พร้อมใช้ ชื่อ db_connect.php ได้ที่
โครงสร้างฐานข้อมูลตัวอย่าง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | CREATE TABLE IF NOT EXISTS `tbl_category` ( `category_id` int (5) NOT NULL , `category_name` varchar (150) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; CREATE TABLE IF NOT EXISTS `tbl_subcategory` ( `subcategory_id` int (11) NOT NULL , `category_id` int (5) NOT NULL , `subcategory_name` varchar (150) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ALTER TABLE `tbl_category` ADD PRIMARY KEY (`category_id`); ALTER TABLE `tbl_subcategory` ADD PRIMARY KEY (`subcategory_id`), ADD KEY `cat_id_index` (`category_id`); ALTER TABLE `tbl_category` MODIFY `category_id` int (5) NOT NULL AUTO_INCREMENT; ALTER TABLE `tbl_subcategory` MODIFY `subcategory_id` int (11) NOT NULL AUTO_INCREMENT; |
ไฟล์ category.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | <?php session_start(); include ( "db_connect.php" ); $mysqli =connect(); if (isset( $_POST [ 'reset_btn' ])){ header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } if (isset( $_GET [ 'deleteID' ])){ delete ( "tbl_category" , " category_id=" . $_GET [ 'deleteID' ]); // ลบหมวดหลัก delete ( "tbl_subcategory" , " category_id=" . $_GET [ 'deleteID' ]); // ลบหมวดย่อย header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } if (isset( $_POST [ 'submit_btn' ]) && $_POST [ 'submit_btn' ]!= "" ){ if (isset( $_GET [ 'editID' ]) && $_GET [ 'editID' ]!= "" ){ if (isset( $_POST [ 'data1' ]) && $_POST [ 'data1' ]!= "" ){ $data = array ( "category_name" => $_POST [ 'data1' ] ); update( "tbl_category" , $data , " category_id=" . $_GET [ 'editID' ]); // แก้ไขหมวดหลัก header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } } else { if (isset( $_POST [ 'data1' ]) && $_POST [ 'data1' ]!= "" ){ $data = array ( "category_id" =>null, "category_name" => $_POST [ 'data1' ], ); insert( "tbl_category" , $data ); // เพิ่มหมวดหลัก header( "Location:" . $_SERVER [ 'PHP_SELF' ]); exit ; } } } ?> <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Document</title> </head> <body> <div style= "margin:auto;width:80%;" > <?php //listfield("tbl_category"); // ถ้าต้องการแสดงรูปแบบข้อมูลสำหรับบันทึกและแก้ไขใช้ฟังก์ชั่นนี้ได้ $more_action = "" ; $edit_data = "" ; if (isset( $_GET [ 'editID' ])){ $more_action = "?editID=" . $_GET [ 'editID' ]; $q =" SELECT * FROM tbl_category WHERE category_id= '".$_GET[' editID ']."' "; $result = $mysqli ->query( $q ); // ทำการ query คำสั่ง sql $rs = $result ->fetch_array(); $edit_data = $rs [ 'category_name' ]; } ?> <br><br> <form action= "<?=$more_action?>" method= "post" > <input type= "text" name= "data1" id= "data1" value= "<?=$edit_data?>" > <input type= "submit" name= "submit_btn" value= "Save" > <input type= "submit" name= "reset_btn" value= "Clear" > </form> <?php if (!isset( $_GET [ 'editID' ])){?> <ul> <?php // วนลูปแสดงรายการ $q =" SELECT * FROM tbl_category "; $result = $mysqli ->query( $q ); // ทำการ query คำสั่ง sql $total = $result ->num_rows; // นับจำนวนถวที่แสดง ทั้งหมด $i =1; while ( $rs = $result ->fetch_array()){ // วนลูปแสดงข้อมูล ?> <li> <?= $i ?>. <a href= "view.php?viewID=<?=$rs['category_id']?>" > <?= $rs [ 'category_name' ]?></a><br> <a href= "?editID=<?=$rs['category_id']?>" >Edit</a> <a href= "?deleteID=<?=$rs['category_id']?>" > Delete </a> <hr style= "border:0px;border-bottom:1px solid #EFEFEF;" > </li> <?php $i ++; } ?> </ul> <?php } ?> </div> </body> </html> |
ไฟล์ view.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | <?php session_start(); include ( "db_connect.php" ); $mysqli =connect(); if (isset( $_GET [ 'sub_deleteID' ])){ delete ( "tbl_subcategory" , " subcategory_id=" . $_GET [ 'sub_deleteID' ]); // ลบหมวดย่อย header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } if (isset( $_POST [ 'submit_btn' ]) && $_POST [ 'submit_btn' ]!= "" ){ if (isset( $_GET [ 'sub_editID' ]) && $_GET [ 'sub_editID' ]!= "" ){ if (isset( $_POST [ 'data2' ]) && $_POST [ 'data2' ]!= "" ){ $data = array ( "subcategory_name" => $_POST [ 'data2' ], ); update( "tbl_subcategory" , $data , " subcategory_id=" . $_GET [ 'sub_editID' ]); // แก้ไข header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } } else { if (isset( $_POST [ 'data2' ]) && $_POST [ 'data2' ]!= "" ){ $data = array ( "subcategory_id" =>null, "category_id" => $_GET [ 'viewID' ], "subcategory_name" => $_POST [ 'data2' ], ); insert( "tbl_subcategory" , $data ); // เพิ่มหมวดย่อย header( "Location:" . $_SERVER [ 'PHP_SELF' ]. "?viewID=" . $_GET [ 'viewID' ]); exit ; } } } ?> <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <title>Document</title> </head> <body> <div style= "margin:auto;width:80%;" > <?php //listfield("tbl_subcategory"); // ดึงข้อมูลหมวดหลัก กรณีต้องการใช้ค่าเพื่อแสดง หรืออ้างอิง $q =" SELECT * FROM tbl_category WHERE category_id= '".$_GET[' viewID ']."' "; $result = $mysqli ->query( $q ); // ทำการ query คำสั่ง sql $rs = $result ->fetch_array(); $category_name = $rs [ 'category_name' ]; $viewID = $rs [ 'category_id' ]; $more_action = "" ; $edit_data2 = "" ; if (isset( $_GET [ 'sub_editID' ])){ $more_action = "&sub_editID=" . $_GET [ 'sub_editID' ]; // ดึงข้อมูลหมวดย่อยสำหรับกรณีต้องการแก้ไข หรืออ้างอิง $q =" SELECT * FROM tbl_subcategory WHERE subcategory_id= '".$_GET[' sub_editID ']."' "; $result = $mysqli ->query( $q ); // ทำการ query คำสั่ง sql $rs = $result ->fetch_array(); $edit_data2 = $rs [ 'subcategory_name' ]; } ?> <form action= "?viewID=<?=$viewID?><?=$more_action?>" method= "post" > <a href= "category.php" > Back : > </a> <?= $category_name ?> <br><br> หมวดย่อย <input type= "text" name= "data2" id= "data2" value= "<?=$edit_data2?>" > <input type= "submit" name= "submit_btn" value= "Save" > </form> <?php if (!isset( $_GET [ 'sub_editID' ])){?> <ul> <?php // วนลูปแสดงรายการ หมวดย่อย $q =" SELECT * FROM tbl_subcategory "; $result = $mysqli ->query( $q ); // ทำการ query คำสั่ง sql $total = $result ->num_rows; // นับจำนวนถวที่แสดง ทั้งหมด $i =1; while ( $rs = $result ->fetch_array()){ // วนลูปแสดงข้อมูล ?> <li> <?= $i ?>. <?= $rs [ 'subcategory_name' ]?><br> <a href= "?viewID=<?=$rs['category_id']?>&sub_editID=<?=$rs['subcategory_id']?>" >Edit</a> <a href= "?viewID=<?=$rs['category_id']?>&sub_deleteID=<?=$rs['subcategory_id']?>" > Delete </a> <hr style= "border:0px;border-bottom:1px solid #EFEFEF;" > </li> <?php $i ++; } ?> </ul> <?php } ?> </div> </body> </html> |
ตัวอย่างข้างต้น จะทำให้เราเข้าใจรูปแบบอย่างง่าย ของการเพิ่ม ลบ
แก้ไข ข้อมูลในฐานข้อมูล แบบทั่วไป และแบบการอ้างอิงกับตารางที่มีความ
สัมพันธ์กัน สามารถนำไปประยุกต์หรือเป็นแนวทางเพิ่มเติมได้ตามต้องการ