Thứ Năm, 23 tháng 6, 2016

Phần 41 - Làm phần xử lý sửa menu ngang

- Tiếp theo là làm tiếp phần sửa menu ngang ở trong bảng 'menu_ngang'.Bạn tạo file 'sua_menu_ngang_o_trong_csdl.php' trong thư mục 'menu_ngang' với nội dung sau:


<?php
    if(!isset($bien_bao_mat)){exit();}
?>
<?php
    $ten_menu=trim($_POST['ten']);
    $ten_menu=str_replace("'","&#39;",$ten_menu);
    $loai_menu=$_POST['loai_menu'];
    $noi_dung=$_POST['noi_dung'];
    $noi_dung=str_replace("'","&#39;",$noi_dung);
    $id=$_GET['id'];
    if($ten_menu!="")
    {
        $tv="
        UPDATE menu_ngang SET
        ten = '$ten_menu',
        noi_dung = '$noi_dung',
        loai_menu = '$loai_menu'
        WHERE id =$id;
        ";
        mysql_query($tv);
    }
    else
    {
        thong_bao_html("Tên menu chưa được điền vào");
    }
?>


- Bạn xem giải thích code (phần chữ xanh) của file 'sua_menu_ngang_o_trong_csdl.php' ở phần bên dưới :


<?php
    if(!isset($bien_bao_mat)){exit();} // xuất ra trang trắng nếu truy cập trực tiếp vào file này
?>
<?php
    // dùng $_POST để lấy giá trị của biểu mẫu sửa menu ngang được gửi
    $ten_menu=trim($_POST['ten']); // lấy tên menu ngang gán vào biến $ten_menu và loại bỏ khoảng trống ở 2 bên trái phải của tên menu
    $ten_menu=str_replace("'","&#39;",$ten_menu);
    // thay thế dấu ' thành &#39; (cách viết này cũng hiển thị ra dấu ' )
    // làm như vậy để tránh gây ra lỗi sql khi sửa dữ liệu , với cách viết câu truy vấn sửa dữ liệu như bên dưới thì sẽ xảy ra lỗi
    // khi sửa dữ liệu mà tên menu có dấu ' nên cần có sự thay thế này
    $loai_menu=$_POST['loai_menu']; // lấy loại menu và gán vào biến $loai_menu
    $noi_dung=$_POST['noi_dung']; // lấy nội dung của menu rồi gán vào biến $noi_dung
    $noi_dung=str_replace("'","&#39;",$noi_dung); // thay thế dấu ' thành &#39; , lý do là tránh gây ra lỗi sql
    $id=$_GET['id']; // lấy biến 'id' trên url (cũng là id menu ngang cần sửa)
    if($ten_menu!="") // đây là trường hợp tên menu không bỏ trống , lúc này biến $ten_menu sẽ khác rỗng
    {
        $tv="
        UPDATE menu_ngang SET // câu truy vấn sửa dữ liệu thì dùng lệnh update , bảng menu_ngang sẽ được cập nhật dữ liệu
        ten = '$ten_menu', // cột 'ten' sẽ được cập nhật lại với nội dung là của biến $ten_menu
        noi_dung = '$noi_dung', // cột 'noi_dung' sẽ được cập nhật với nội dung là của biến $noi_dung
        loai_menu = '$loai_menu' // cột 'loai_menu' sẽ được cập nhật với nội dung là của biến $loai_menu
        WHERE id =$id;
        // dòng dữ liệu cập nhật sẽ là dòng mà cột 'id' của dòng đó có giá trị là biến 'id' trên url (tức là id của menu ngang đang được sửa)
        ";
        mysql_query($tv);
        // gửi câu truy vấn vào mysql bằng lệnh mysql_query
    }
    else
    {
        // trường hợp không điền tên menu
        thong_bao_html("Tên menu chưa được điền vào");
        // xuất ra thông báo "Tên menu chưa được điền vào"
    }
?>


- Sau đó mình sửa dữ liệu của Menu 6 thì đã thấy đã sửa được dữ liệu , kết quả mình nhận được :


- Khi mình không điền tên menu thì sẽ nhận được thông báo "Tên menu chưa được điền vào"

- Khi bạn thực hiện gửi biểu mẫu sửa menu ngang thì web sẽ chạy file 'xu_ly_post_get.php' , lúc này sẽ tồn tại biến $_POST['bieu_mau_sua_menu_ngang'] , từ đó file 'xu_ly_post_get.php' sẽ gọi file  'sua_menu_ngang_o_trong_csdl.php' ( để xử lý sửa dữ liệu menu ngang ) bằng đoạn code sau :

if(isset($_POST['bieu_mau_sua_menu_ngang']))
{
    include("chuc_nang/menu_ngang/sua_menu_ngang_o_trong_csdl.php");
    trang_truoc_html();
}

- File 'sua_menu_ngang_o_trong_csdl.php' sẽ thực hiện sửa dữ liệu trong bảng 'menu_ngang' bằng lệnh update nếu như không bỏ trống tên menu