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

Phần 47 - Làm phần xuất biểu mẫu thêm sản phẩm

- Tiếp theo là làm phần thêm sản phẩm , bạn tạo thư mục 'san_pham' trong thư mục 'chuc_nang' (đường dẫn 'quan_tri/chuc_nang') , sau đó tạo file 'them_san_pham.php' trong thư mục 'san_pham' với nội dung sau :


<?php
    if(!isset($bien_bao_mat)){exit();}
?>
<form action="" method="post" enctype="multipart/form-data" >
    <table width="990px" >
        <tr>
            <td colspan="2" ><b style="color:blue;font-size:20px" >Thêm sản phẩm</b><br><br> </td>
           
        </tr>
        <tr>
            <td width="150px" >Tên : </td>
            <td width="840px">
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="ten" value="" >
            </td>
        </tr>
        <tr>
            <td>Danh mục : </td>
            <td>
                <?php
                    if(!isset($_SESSION['danh_muc_menu']))
                    {
                        $_SESSION['danh_muc_menu']="";
                    }
                ?>
                <select name="danh_muc" style="margin-top:3px;margin-bottom:3px;" >
                    <?php
                        $tv="select * from menu_doc order by id ";
                        $tv_1=mysql_query($tv);
                        $a="";
                        while($tv_2=mysql_fetch_array($tv_1))
                        {
                            $ten=$tv_2['ten'];
                            $id_menu=$tv_2['id'];
                            if($_SESSION['danh_muc_menu']==$id_menu)
                            {
                                $a="selected";
                            }
                            echo "<option value='$id_menu' $a >";
                                echo $ten;
                            echo "</option>";
                            $a="";
                        }
                    ?>
                </select>
            </td>
        </tr>
        <tr>
            <td >Hình ảnh : </td>
            <td>
                <input type="file" name="hinh_anh" >
            </td>
        </tr>
        <tr>
            <td>Giá : </td>
            <td>
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="gia" value="" >
            </td>
        </tr>
        <tr>
            <td>Trang chủ : </td>
            <td>
                <?php
                    $a_1="";
                    $a_2="";
                    if(isset($_SESSION['tuy_chon_trang_chu']))
                    {
                        if($_SESSION['tuy_chon_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(isset($_SESSION['tuy_chon_noi_bat']))
                    {
                        if($_SESSION['tuy_chon_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 valign="top" >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" ></textarea>
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_them_san_pham" value="Thêm 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 'them_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
?>
<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)
// lưu ý là có viết
enctype="multipart/form-data" , cách viết này cho phép biểu mẫu tải hình ảnh lên
// nếu không viết như vậy thì sẽ không tải ảnh được
    <table width="990px" >
        <tr>
            <td colspan="2" ><b style="color:blue;font-size:20px" >Thêm sản phẩm</b><br><br> </td>
            // xuất tiêu đề màu xanh và kích cỡ chữ 20px           
        </tr>
        <tr>
            <td width="150px" >Tên : </td>
            <td width="840px">
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="ten" value="" >
                // 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)
                // 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>Danh mục : </td>
            <td>
                <?php
                    if(!isset($_SESSION['danh_muc_menu']))
                    {
                        $_SESSION['danh_muc_menu']="";
                        // vì mình muốn sau khi thêm sản phẩm thì web sẽ giữ lại phần danh mục menu được chọn trước đó nên tạo ra biến session này
                        // biến session 'danh_muc_menu' sẽ lưu giá trị của danh mục menu được chọn sau khi thêm sản phẩm
                    }
                ?>
                <select name="danh_muc" style="margin-top:3px;margin-bottom:3px;" >
                // xuất hộp tùy chọn select với name là 'danh_muc' (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['danh_muc']
                    <?php
                        $tv="select * from menu_doc order by id "; // chọn các menu trong bảng 'menu_doc' để xuất vào thẻ 'select'
                        $tv_1=mysql_query($tv);
                        $a="";
                        while($tv_2=mysql_fetch_array($tv_1)) // lấy dữ liệu của các dòng dữ liệu trong bảng 'menu_doc' rồi gán vào mảng $tv_2
                        {
                            $ten=$tv_2['ten']; // cột 'ten' trong bảng 'menu_doc' được gán vào biến $ten                            $id_menu=$tv_2['id']; // cột 'id' trong bảng 'menu_doc' được gán vào biến $id_menu
                            if($_SESSION['danh_muc_menu']==$id_menu)
                            // nếu id menu trùng khớp với session 'danh_muc_menu' thì danh mục đó đã được chọn trong lần thêm sản phẩm trước đó
                            {
                                $a="selected";
                                // khi xảy ra trùng khớp thì sẽ cho biến $a có giá trị là 'selected' rồi xuất vào thẻ 'option'
                                // thẻ 'option' nào có 'selected' thì sẽ được chọn và hiển thị ra trước
                            }
                            echo "<option value=' $id_menu' $a >";
                            // xuất giá trị của thẻ 'option' (thuộc tính 'value' ,  giá trị là id menu tương ứng )
                            // và biến $a (nhằm chọn tùy chọn nào hiển thị trước)

                                echo $ten;
                                // hiển thị tên menu ra ngoài màn hình (nằm trong thẻ 'option' )
                            echo "</option>";
                            $a="";
                        }
                    ?>
                </select>
            </td>
        </tr>
        <tr>
            <td >Hình ảnh : </td>
            <td>
                <input type="file" name="hinh_anh" > // xuất hộp chọn tải ảnh , hộp chọn tải ảnh sẽ có type là file
            </td>
        </tr>
        <tr>
            <td>Giá : </td>
            <td>
                <input style="width:400px;margin-top:3px;margin-bottom:3px;" name="gia" value="" >
                // 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)
                // 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>
                // phần dưới này tương tự như phần chọn 'Loại menu' lúc thêm menu ngang
                // (nếu bạn đọc code phần dưới (phần tùy chọn hiển thị trang chủ)  mà không hiểu thì hãy xem lại phần thêm menu ngang)

                // phần dưới này xuất ra tùy chọn hiển thị trang chủ của sản phẩm được thêm
                // session 'tuy_chon_trang_chu'  được dùng để xác định giá trị tùy chọn của sản phẩm trang chủ được thêm
                <?php
                    $a_1="";
                    $a_2="";
                    if(isset($_SESSION['tuy_chon_trang_chu']))
                    {
                        if($_SESSION['tuy_chon_trang_chu']=="co")
                        {
                            $a_2="selected";
                        }
                    }
                ?>
                <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_2 vào tùy chọn 'Có'
                </select>
            </td>
        </tr>
        <tr>
            <td>Nổi bật : </td>
            <td>
                // phần dưới này tương tự như phần chọn 'Trang chủ' phía trên
                // phần dưới này xuất ra tùy chọn hiển thị sản phẩm nổi bật của sản phẩm được thêm
                // (nằm bên tay phải trước phần quảng cáo phải của trang chủ web)
                // session 'tuy_chon_noi_bat'  được dùng để xác định giá trị tùy chọn nổi bật của sản phẩm được thêm

                <?php
                    $a_1="";
                    $a_2="";
                    if(isset($_SESSION['tuy_chon_noi_bat']))
                    {
                        if($_SESSION['tuy_chon_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> // 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_2 vào tùy chọn 'Có'
                </select>
            </td>
        </tr>
        <tr>
            <td valign="top" >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" ></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']
            </td>
        </tr>
        <tr>
            <td>&nbsp;</td>
            <td>
                <br>
                <input type="submit" name="bieu_mau_them_san_pham" value="Thêm sản phẩm" style="width:200px;height:50px;font-size:24px" >
                // tạo nút gửi biểu mẫu thêm sản phẩm với name là 'bieu_mau_them_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_them_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 vào trang quản trị rồi bấm vào liên kết 'Thêm sản phẩm' thì nhận được kết quả sau :



 - Khi mình bấm vào liên kết thêm sản phẩm (ở file 'trang_chu_2.php' ) => web sẽ đến trang ?thamso=them_san_pham , web sẽ tải file 'dieu_huong.php' và  gọi file 'them_san_pham.php' bằng đoạn code sau :


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

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