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

Phần 65 - Làm phần xử lý sửa slideshow

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


<?php
    if(!isset($bien_bao_mat)){exit();}
    $id=$_GET['id'];
    $lien_ket=trim($_POST['lien_ket']);
    $ten_file_anh_tai_len=$_FILES['hinh_anh']['name'];
    if($ten_file_anh_tai_len!="")
    {
        $ten_file_anh=$ten_file_anh_tai_len;
    }
    else
    {
        $ten_file_anh=$_POST['ten_anh'];
    }
    $kiem_tra_anh="hop_le";   
    if($ten_file_anh_tai_len!="")
    {
        $tv_k="select count(*) from slideshow where hinh='$ten_file_anh' ";
        $tv_k_1=mysql_query($tv_k);
        $tv_k_2=mysql_fetch_array($tv_k_1);
        if($tv_k_2[0]!=0)
        {
            $kiem_tra_anh="khong_hop_le";   
        }
    }
    if($kiem_tra_anh=="hop_le")
    {

        if($ten_file_anh_tai_len!="")
        {               
            $duong_dan_anh="../hinh_anh/slideshow/".$ten_file_anh_tai_len;
            move_uploaded_file($_FILES['hinh_anh']['tmp_name'],$duong_dan_anh);
            $duong_dan_anh_cu="../hinh_anh/slideshow/".$_POST['ten_anh'];
            unlink($duong_dan_anh_cu);
        }       

        $tv="
        UPDATE slideshow SET
        hinh = '$ten_file_anh',
        lien_ket = '$lien_ket'
        WHERE id =$id;
        ";
        mysql_query($tv);   
               

    }
    else
    {
        thong_bao_html("Hình ảnh bị trùng tên");
    }
?>


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


<?php
    // dùng $_POST để lấy giá trị của biểu mẫu sửa slideshow được gửi
    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
    $id=$_GET['id']; // lấy biến 'id' trên url (cũng là id slideshow cần sửa)
    $lien_ket=trim($_POST['lien_ket']);
    // lấy liên kết slideshow gán vào biến $lien_ket và loại bỏ khoảng trống ở 2 bên trái phải của liên kết slideshow
    $ten_file_anh_tai_len=$_FILES['hinh_anh']['name']; // lấy tên file ảnh tải lên
    if($ten_file_anh_tai_len!="") // trường hợp tên file ảnh tải lên khác rỗng
    {
        $ten_file_anh=$ten_file_anh_tai_len;
      // trường hợp tên file ảnh tải lên khác rỗng thì tên file ảnh sửa vào csdl sẽ là tên file ảnh tải lên ( $ten_file_anh_tai_len ) 
    }
    else
    {
        $ten_file_anh=$_POST['ten_anh'];
        // trường hợp tên file ảnh tải lên bằng rỗng thì tên file ảnh sửa vào csdl sẽ là tên file ảnh nằm trong thẻ input ẩn ( type="hidden" )  
    }
    $kiem_tra_anh="hop_le";
     // ban đầu ảnh tải lên sẽ được cho là hợp lệ bằng cách gán biến $kiem_tra_anh có giá trị là 'hop_le'   
     // ảnh không hợp lệ là khi ảnh tải lên bị trùng tên ảnh cũ , khi đó biến $kiem_tra_anh có giá trị là 'khong_hop_le'
     // phần code phía dưới sẽ kiểm tra ảnh có hợp lệ hay không
    if($ten_file_anh_tai_len!="") // trường hợp có tải ảnh (biến $ten_file_anh_tai_len khác rỗng)
    {
        $tv_k="select count(*) from slideshow where hinh='$ten_file_anh' ";
        // chuỗi truy vấn này dùng để xác định hình ảnh tải lên có bị trùng lặp tên hay không ( where hinh='$ten_file_anh'  )
        // trường hợp tên ảnh không trùng thì ô đầu tiên của dòng dữ liệu trả về sẽ có giá trị 0
        $tv_k_1=mysql_query($tv_k);
        $tv_k_2=mysql_fetch_array($tv_k_1);
        if($tv_k_2[0]!=0)
        // trường hợp tải ảnh trùng tên (ô đầu tiên của dòng dữ liệu trả về có giá trị khác 0)
        // trường hợp này là tải ảnh không hợp lệ
        {
            $kiem_tra_anh="khong_hop_le";
            // do tải ảnh không hợp lệ (trùng tên) nên biến $kiem_tra_anh được gán giá trị là 'khong_hop_le'    
        }
    }
    if($kiem_tra_anh=="hop_le") // trường hợp ảnh tải lên hợp lệ
    {

        if($ten_file_anh_tai_len!="")
        // trường hợp có tải ảnh (biến $ten_file_anh_tai_len khác rỗng)
        // trường hợp này thì tải ảnh và xóa ảnh cũ
        {               
            $duong_dan_anh="../hinh_anh/slideshow/".$ten_file_anh_tai_len;
           // tạo đường dẫn ảnh tải lên (ảnh tải lên trong thư mục 'hinh_anh/slideshow' , cách ghi ../ là lùi về 1 thư mục )
            move_uploaded_file($_FILES['hinh_anh']['tmp_name'],$duong_dan_anh);
            // thực hiện tải ảnh bằng hàm move_uploaded_file , ảnh sẽ được tải từ thẻ input có name là 'hinh_anh'
            $duong_dan_anh_cu="../hinh_anh/slideshow/".$_POST['ten_anh'];
            // tạo đường dẫn ảnh cũ
            unlink($duong_dan_anh_cu);
            // xóa ảnh cũ
        }       

        $tv="
        UPDATE slideshow SET // câu truy vấn sửa dữ liệu thì dùng lệnh update , bảng slideshow sẽ được cập nhật dữ liệu
        hinh = '$ten_file_anh', // cột 'hinh' sẽ được cập nhật lại với nội dung là của biến $ten_file_anh
        lien_ket = '$lien_ket' // cột 'lien_ket' sẽ được cập nhật lại với nội dung là của biến $lien_ket
        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 slideshow đang được sửa)
        ";
        mysql_query($tv);    // gửi câu truy vấn vào mysql bằng lệnh mysql_query
               

    }
    else
    {
        thong_bao_html("Hình ảnh bị trùng tên");
        // nếu ảnh trùng tên thì xuất ra thông báo "Hình ảnh bị trùng tên"
    }
?>


- Sau đó mình sửa ảnh slideshow (sửa thành "Ảnh quảng cáo 6" ) thì đã thấy đã sửa được , kết quả mình nhận được :



- Khi mình tải ảnh trùng tên ảnh cũ thì sẽ nhận được thông báo "Hình ảnh bị trùng tên"

- Khi bạn thực hiện gửi biểu mẫu sửa slideshow 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_slideshow'] , từ đó file 'xu_ly_post_get.php' sẽ gọi file  'sua_sllideshow_o_trong_csdl.php' ( để xử lý sửa dữ liệu sản phẩm ) bằng đoạn code sau :

if(isset($_POST['bieu_mau_sua_slideshow']))
{
    include("chuc_nang/slideshow/sua_slideshow_o_trong_csdl.php");
    trang_truoc_html();
}

- File 'sua_slideshow_o_trong_csdl.php' sẽ thực hiện sửa dữ liệu trong bảng 'slideshow' bằng lệnh update