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

Phần 50 - Làm phần xuất biểu mẫu sửa sản phẩm

- Tiếp theo là làm phần sửa sản phẩm , bạn tạo file 'sua_san_pham.php' trong thư mục 'san_pham' với nội dung sau :


<?php
    if(!isset($bien_bao_mat)){exit();}
?>
<?php
    $id=$_GET['id'];
    $tv="select * from san_pham where id='$id' ";
    $tv_1=mysql_query($tv);
    $tv_2=mysql_fetch_array($tv_1);
    $ten=$tv_2['ten'];
    $gia=$tv_2['gia'];
    $trang_chu=$tv_2['trang_chu'];
    $noi_bat=$tv_2['noi_bat'];
    $noi_dung=$tv_2['noi_dung'];
    $ten_anh=$tv_2['hinh_anh'];
    $link_hinh="../hinh_anh/san_pham/".$tv_2['hinh_anh'];
    $link_dong="?thamso=quan_ly_san_pham&id_menu=".$_GET['id_menu']."&trang=".$_GET['trang'];
?>
<form action="" method="post" enctype="multipart/form-data" >
    <table width="990px" >
        <tr>
            <td width="180px" ><b style="color:blue;font-size:20px" >Sửa sản phẩm</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 valign="top" >Hình ảnh : </td>
            <td >
                <img src='<?php echo $link_hinh; ?>' style='width:180px' >
                <br><br>
                <input type="file" name="hinh_anh" >
                <input type="hidden" name="ten_anh" value="<?php echo $ten_anh; ?>" >
                <br><br>
                <a href="<?php echo $link_hinh; ?>" class="lk_a1" style="font-size:24px" target="_blank" >Xem ảnh đủ kích cỡ</a>
                <br><br>
            </td>
        </tr>
        <tr>
            <td >Giá : </td>
            <td >
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="gia" value="<?php echo $gia; ?>" >
            </td>
        </tr>
        <tr>
            <td>Trang chủ : </td>
            <td>
                <?php
                    $a_1="";
                    $a_2="";
                    if($trang_chu=="co")
                    {
                        $a_2="selected";
                    }
                ?>
                <select name="trang_chu" style="margin-top:3px;margin-bottom:3px;" >
                    <option value="" <?php echo $a_1; ?> >Không</option>
                    <option value="co" <?php echo $a_2; ?> >Có</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Nổi bật : </td>
            <td>
                <?php
                    $a_1="";
                    $a_2="";
                    if($noi_bat=="co")
                    {
                        $a_2="selected";
                    }
                ?>
                <select name="noi_bat" style="margin-top:3px;margin-bottom:3px;" >
                    <option value="" <?php echo $a_1; ?> >Không</option>
                    <option value="co" <?php echo $a_2; ?> >Có</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Nội dung : </td>
            <td>
                <script type="text/javascript">
                  tinymce.init({
                    selector: '#noi_dung',
                    theme: 'modern',
                    width: 800,
                    height: 400,
                    plugins: [
                      'advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker',
                      'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking',
                      'save table contextmenu directionality emoticons template paste textcolor jbimages'
                    ],
                    toolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor emoticons jbimages',
                    relative_urls: false
                  });
                 
                  </script>
                  <textarea id="noi_dung" name="noi_dung" ><?php echo $noi_dung; ?></textarea>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_sua_san_pham" value="Sửa sản phẩm" 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_san_pham.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 sản phẩm mà người dùng bấm vào
    $tv="select * from san_pham where id='$id' ";
    // truy cập vào bảng 'san_pham' với biến 'id' trên url (id sản phẩm 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 rồi gán vào biến $ten
    $gia=$tv_2['gia']; // lấy cột 'gia' của dòng dữ liệu nhận được rồi gán vào biến $gia
    $trang_chu=$tv_2['trang_chu']; // lấy cột 'trang_chu' của dòng dữ liệu nhận được rồi gán vào biến $trang_chu
    $noi_bat=$tv_2['noi_bat']; // lấy cột 'noi_bat' của dòng dữ liệu nhận được rồi gán vào biến $noi_bat
    $noi_dung=$tv_2['noi_dung']; // lấy cột 'noi_dung' của dòng dữ liệu nhận được rồi gán vào biến $noi_dung
    $ten_anh=$tv_2['hinh_anh']; // lấy cột 'hinh_anh' của dòng dữ liệu nhận được rồi gán vào biến $ten_anh
    $link_hinh="../hinh_anh/san_pham/".$tv_2['hinh_anh'];
    // tạo ra liên kết hình , hình ảnh trong thư mục 'hinh_anh/san_pham' (cách viết ../ là lùi về 1 thư mục)
    // liên kết hình được gán vào biến $link_hinh

    $link_dong="?thamso=quan_ly_san_pham&id_menu=".$_GET['id_menu']."&trang=".$_GET['trang'];
    // tạo link đóng để quay về trang quản lý sản phẩm
    // 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 đó     // liên kết này dùng thêm biến 'id_menu' trên url để xác định lựa chọn của thẻ 'select' được chọn trước đó 
?>
<form action="" method="post" enctype="multipart/form-data" >
// tạo biểu mẫu với phương thức là post (thuộc tính method)
// vì có tải ảnh nên cần ghi
enctype="multipart/form-data"
    <table width="990px" >
        <tr>
            <td width="180px" ><b style="color:blue;font-size:20px" >Sửa sản phẩm</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 sản phẩm 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ý sản phẩm

            </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 sản phẩm của liên kết sản phẩm đượ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 valign="top" >Hình ảnh : </td>
            <td >
                <img src='<?php echo $link_hinh; ?>' style='width:180px' >
                // xuất hình ảnh sản phẩm ra
                <br><br>
                <input type="file" name="hinh_anh" > // tạo hộp chọn ảnh với name là 'hinh_anh' (type là file )
                <input type="hidden" name="ten_anh" value="<?php echo $ten_anh; ?>" >
                // tạo thẻ input ẩn (hidden) , thẻ này chứa tên ảnh và có name là 'ten_anh'
                // trường hợp không có tải ảnh thì lưu lại tên ảnh trong thẻ này vào bảng 'san_pham'                <br><br>
                <a href="<?php echo $link_hinh; ?>" class="lk_a1" style="font-size:24px" target="_blank" >Xem ảnh đủ kích cỡ</a>
                // xuất ảnh trong 1 tab khác với kích cỡ đầy đủ (tab khác : target="_blank" )
                <br><br>
            </td>
        </tr>
        <tr>
            <td >Giá : </td>
            <td >
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="gia" value="<?php echo $gia; ?>" >
                // xuất khung nhập liệu giá ; 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à giá sản phẩm của liên kết sản phẩm được bấm vào : echo $gia;
                // lưu ý khung này có name là 'gia' => khi lấy dữ liệu từ khung này bằng mã php thì viết là $_POST['gia']
            </td>
        </tr>
        <tr>
            <td>Trang chủ : </td>
            <td>                
                <?php
                    // đoạn code dưới nhằm xác định giá trị của biến $a_1 và $a_2
                    // nếu sản phẩm có tùy chọn trang chủ là có thì biến $a_2 có giá trị là selected
                    $a_1="";
                    $a_2="";
                    if($trang_chu=="co") // nếu biến $trang_chu sẽ có giá trị là 'co'
                    {
                        $a_2="selected";
                        // thì biến $a_2 sẽ có giá trị là 'selected'                        // Bạn để ý 2 thẻ option phía dưới mình có xuất biến $a_1 và $a_2
                        // Thẻ option nào có ghi 'selected' thì thẻ option đó sẽ được chọn trong thẻ select
                        //  (nghĩa là tùy chọn option đó sẽ được chọn trước)
                        // biến $a_1 được xuất vào tùy chọn 'Không' , biến $a_2 được xuất vào tùy chọn 'Có'
                    }
                ?>
                <select name="trang_chu" style="margin-top:3px;margin-bottom:3px;" >
                 // xuất hộp tùy chọn select với name là 'trang_chu' (hộp này cũng cách trên , cách dưới 3px)
                 // khi lấy dữ liệu từ hộp này thì viết là $_POST['trang_chu']
                    <option value="" <?php echo $a_1; ?> >Không</option> // cho biến $a_1 vào tùy chọn 'Không'
                    <option value="co" <?php echo $a_2; ?> >Có</option> // cho biến $a_1 vào tùy chọn 'Có'
                </select>
            </td>
        </tr>
        <tr>
            <td>Nổi bật : </td>
            <td>
                <?php
                    // phần code dưới này là xuất ra tùy chọn nổi bật của sản phẩm
                    // cũng tương tự như khi xuất hộp tùy chọn select với name là 'trang_chu' , bạn tự xem lại
                    $a_1="";
                    $a_2="";
                    if($noi_bat=="co")
                    {
                        $a_2="selected";
                    }
                ?>
                <select name="noi_bat" style="margin-top:3px;margin-bottom:3px;" >
                 // xuất hộp tùy chọn select với name là 'noi_bat' (hộp này cũng cách trên , cách dưới 3px)
                 // khi lấy dữ liệu từ hộp này thì viết là $_POST['noi_bat']
                    <option value="" <?php echo $a_1; ?> >Không</option>
                    <option value="co" <?php echo $a_2; ?> >Có</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Nội dung : </td>
            <td>
                <script type="text/javascript">
                  tinymce.init({ // thực hiện mã tùy chỉnh khung nhập liệu tinymce
                    selector: '#noi_dung', // hộp nhập liệu này áp dụng đối với phần tử textarea có id là 'noi_dung'
                    theme: 'modern',
                    width: 800, // chiều rộng 800px
                    height: 400, // chiều cao 400px
                    plugins: [ // các plugin được thêm vào khung nhập liệu tinymce này , để ý có plugin jbimages (dùng để tải ảnh)
                      'advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker',
                      'searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking',
                      'save table contextmenu directionality emoticons template paste textcolor jbimages'
                    ],
                    toolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image | print preview media fullpage | forecolor backcolor emoticons jbimages',
                    // hiển thị các thành phần của khung nhập liệu tinymce , để ý sẽ thấy có jbimages
                    relative_urls: false
                  });
                 
                  </script>
                  <textarea id="noi_dung" name="noi_dung" ><?php echo $noi_dung; ?></textarea>
                  // đây là khung nhập liệu tinymce , thẻ textarea này được thay thế thành khung nhập liệu tinymce vì  thẻ textarea này có id là    
                  // 'noi_dung' ; phần tùy chỉnh phía trên đã nói rằng textarea có id là 'noi_dung' chính là khung nhập liệu tinymce
                  
// thẻ textarea này có name là 'noi_dung' nên khi lấy dữ liệu khung này thì viết là $_POST['noi_dung']
                  // giá trị của thẻ textarea này là nội dung của sản phẩm được bấm vào liên kết (dựa vào biến 'id' trên url) : echo $noi_dung
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_sua_san_pham" value="Sửa sản phẩm" style="width:200px;height:50px;font-size:24px" >
                // tạo nút gửi biểu mẫu sửa sản phẩm với name là 'bieu_mau_sua_san_pham'
                // 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_san_pham']) )
                // đị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 sản phẩm có tên là 'Sản phẩm 2_1' (từ trang quản lý sản phẩm) thì nhận được kết quả sau :



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

case "sua_san_pham":
    include("chuc_nang/san_pham/sua_san_pham.php");
break;

- Từ đó sẽ xuất ra biểu mẫu sửa sản phẩm