แนวทางการศึกษาหมวดหลักหมวดย่อย กับการเพิ่ม ลบ แก้ไขข้อมูล

เขียนเมื่อ 8 ปีก่อน โดย Ninenik Narkdee
หมวดหลัก php หมวดย่อย ฐานข้อมูล

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ หมวดหลัก php หมวดย่อย ฐานข้อมูล

ดูแล้ว 6,922 ครั้ง


ตัวอย่างโค้ด พร้อมคำอธิบายต่อไปนี้ เป็นแนวทางอย่างง่ายเพื่อศึกษา
การทำงานของระบบหมวดหลักหมวยย่อย ที่มีความสัมพันธ์กัน โดยในตัวอย่าง
จะเป็นการสมมติโดยใช้ตัวแปร array ที่เป็น ตัวแปร session 
สามารถเป็นแนวทางสำหรับใช้ประยุกต์ กรณีใช้กับฐานข้อมูล ที่มีความสัมพันธ์
หมวดหลัก และหมวดย่อยได้
 
ก่อนศึกษารายละเอียดด้านใน ให้สร้างไฟล์ php แล้ว copy โค้ดต่อไปนี้
ไปทดลองรันดูการทำงาน ทั้ง
  • การเพิ่ม ลบ แก้ไข หมวดหลัก
  • การคลิกเข้าไปดูรายการในหมวดหลัก
  • การเพิ่ม ลบ แก้ไข หมวดย่อย
 
โต้ด php สำหรับทดสอบ ใช้ session ทดสอบดูภาพรวม
ไฟล์ category.php
 
<?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
 
<?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 ได้ที่
 
โครงสร้างฐานข้อมูลตัวอย่าง
 
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
 
<?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
 
<?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>
 
 
ตัวอย่างข้างต้น จะทำให้เราเข้าใจรูปแบบอย่างง่าย ของการเพิ่ม ลบ
แก้ไข ข้อมูลในฐานข้อมูล แบบทั่วไป และแบบการอ้างอิงกับตารางที่มีความ
สัมพันธ์กัน สามารถนำไปประยุกต์หรือเป็นแนวทางเพิ่มเติมได้ตามต้องการ


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ








เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ