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

Phần 45 - Làm phần sửa menu dọc

- Tiếp theo là làm phần sửa menu dọc , bạn tạo file 'sua_menu_doc.php' trong thư mục 'menu_doc' với nội dung sau :


<?php
    if(!isset($bien_bao_mat)){exit();}
?>
<?php
    $id=$_GET['id'];
    $tv="select * from menu_doc where id='$id' ";
    $tv_1=mysql_query($tv);
    $tv_2=mysql_fetch_array($tv_1);
    $ten=$tv_2['ten'];
    $link_dong="?thamso=quan_ly_menu_doc&trang=".$_GET['trang'];
?>
<form action="" method="post">
    <table width="990px" >
        <tr>
            <td width="180px" ><b style="color:blue;font-size:20px" >Sửa menu dọc</b><br><br> </td>
            <td width="810px" align="right" >
                <a href="<?php echo $link_dong; ?>" class="lk_a1" style="margin-right:30px" >Đóng</a>
            </td>
        </tr>
        <tr>
            <td >Tên : </td>
            <td >
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="ten" value="<?php echo $ten; ?>" >
            </td>
        </tr>       
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_sua_menu_doc" value="Sửa menu" style="width:200px;height:50px;font-size:24px" >
            </td>
        </tr>
    </table>
</form>

- Bạn xem giải thích code (phần chữ xanh) của file 'sua_menu_doc.php'  ở phía 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
    $id=$_GET['id']; // lấy biến 'id' trên url , id này cũng là id của menu dọc mà người dùng bấm vào
    $tv="select * from menu_doc where id='$id' ";
    // truy cập vào bảng 'menu_doc' với biến 'id' trên url (id menu dọc mà người dùng bấm vào )
    $tv_1=mysql_query($tv); // gửi truy vấn vào mysql
    $tv_2=mysql_fetch_array($tv_1); // lấy dòng dữ liệu rồi đưa vào mảng $tv_2
    $ten=$tv_2['ten']; // lấy cột 'ten' của dòng dữ liệu nhận được
    $link_dong="?thamso=quan_ly_menu_doc&trang=".$_GET['trang'];
    // tạo link đóng để quay về trang quản lý menu dọc
    // liên kết này sẽ dùng biến 'trang' trên url để về trang quản lý sản phẩm cùng với vị trí trang trước đó
?>
<form action="" method="post"> // tạo biểu mẫu với phương thức là post (thuộc tính method)
    <table width="990px" >
        <tr>
            <td width="180px" ><b style="color:blue;font-size:20px" >Sửa menu dọc</b><br><br> </td>
            <td width="810px" align="right" >
                <a href="<?php echo $link_dong; ?>" class="lk_a1" style="margin-right:30px" >Đóng</a>
                // xuất liên kết đóng trang sửa menu với class là 'lk_a1' (liên kết có class 'lk_a1' được định dạng trong file 'giao_dien.css' )
                // khi bạn bấm vào liên kết 'Đóng' này thì web sẽ trở về trang quản lý menu dọc

            </td>
        </tr>
        <tr>
            <td >Tên : </td>
            <td >
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="ten" value="<?php echo $ten; ?>" >
                // xuất khung nhập liệu tên ; khung này cách trên cách dưới 3px (margin-top,margin-bottom) và rộng 400px (width)                
// giá trị của khung này là tên menu của liên kết menu được bấm vào : echo $ten;
                // lưu ý khung này có name là 'ten' => khi lấy dữ liệu từ khung này bằng mã php thì viết là $_POST['ten']
                // (biểu mẫu hiện tại dùng phương thức post (thuộc tính method) nên khi lấy dữ liệu thì dùng $_POST )
            </td>
        </tr>       
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_sua_menu_doc" value="Sửa menu" style="width:200px;height:50px;font-size:24px" >
                // tạo nút gửi biểu mẫu sửa menu dọc với name là 'bieu_mau_sua_menu_doc'
                // trong file 'xu_ly_post_get.php' sẽ dùng phần name này
                // để xác định biểu mẫu có được gửi hay không ( isset($_POST['bieu_mau_sua_menu_doc']) )
                // định dạng css của nút này (thuộc tính style) là : rộng 200px , cao 50px , kích cỡ chữ 24px
            </td>
        </tr>
    </table>
</form>


- Mình bấm vào liên kết sửa menu có tên là 'Menu 5' (từ trang quản lý menu) thì nhận được kết quả sau :



 - Khi mình bấm vào liên kết sửa menu có tên  "Menu 5" => web sẽ truyền biến thamso lên url với giá trị là sua_menu_doc , web sẽ tải file 'dieu_huong.php' và  gọi file 'sua_menu_doc.php' bằng đoạn code sau :

case "sua_menu_doc":
    include("chuc_nang/menu_doc/sua_menu_doc.php");
break;

- Từ đó sẽ xuất ra biểu mẫu sửa menu dọc

- Tiếp theo là làm tiếp phần sửa menu dọc ở trong bảng 'menu_doc'.Bạn tạo file 'sua_menu_doc_o_trong_csdl.php' trong thư mục 'menu_doc' 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);
    $id=$_GET['id'];
    if($ten_menu!="")
    {
        $tv="
        UPDATE menu_doc SET
        ten = '$ten_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_doc_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 dọc được gửi
    $ten_menu=trim($_POST['ten']);  // lấy tên menu dọc 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
    $id=$_GET['id']; // lấy biến 'id' trên url (cũng là id menu dọc 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_doc SET // câu truy vấn sửa dữ liệu thì dùng lệnh update , bảng menu_doc 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
        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 dọc đ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 5 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 dọc 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_doc'] , từ đó file 'xu_ly_post_get.php' sẽ gọi file  'sua_menu_doc_o_trong_csdl.php' ( để xử lý sửa dữ liệu menu dọc ) bằng đoạn code sau :

if(isset($_POST['bieu_mau_sua_menu_doc']))
{
    include("chuc_nang/menu_doc/sua_menu_doc_o_trong_csdl.php");
    trang_truoc_html();
}

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