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

Phần 53 - Làm phần quản lý hóa đơn

- Tiếp theo là làm phần quản lý hóa đơn , bạn tạo thư mục 'hoa_don' trong thư mục 'quan_tri/chuc_nang' bạn tạo file 'quan_ly_hoa_don.php' trong thư mục 'hoa_don' với nội dung sau :


<?php
    if(!isset($bien_bao_mat)){exit();}
?>
<?php
    $so_dong_tren_mot_trang=20;
    if(!isset($_GET['trang'])){$_GET['trang']=1;}
   
    $tv="select count(*) from hoa_don";
    $tv_1=mysql_query($tv);
    $tv_2=mysql_fetch_array($tv_1);
    $so_trang=ceil($tv_2[0]/$so_dong_tren_mot_trang);
   
    $vtbd=($_GET['trang']-1)*$so_dong_tren_mot_trang;
    $tv="select * from hoa_don order by id desc limit $vtbd,$so_dong_tren_mot_trang";
    $tv_1=mysql_query($tv);
?>
<table width="990px" class="tb_a1" >
    <tr style="background:#CCFFFF;height:40px;" >
        <td width="370px" ><b>Tên</b></td>
        <td width="300px" ><b>Email</b></td>
        <td width="120px" ><b>Điện thoại</b></td>
        <td align="center" width="100px" ><b>Sửa</b></td>
        <td align="center" width="100px" ><b>Xóa</b></td>
    </tr>
    <?php
        while($tv_2=mysql_fetch_array($tv_1))
        {
            $id=$tv_2['id'];
            $ten=$tv_2['ten_nguoi_mua'];
            $email=$tv_2['email'];
            $dien_thoai=$tv_2['dien_thoai'];
            $link_xem="?thamso=xem_hoa_don&id=".$id."&trang=".$_GET['trang'];
            $link_xoa="?xoa_hoa_don=co&id=".$id;
            ?>
                <tr class="a_1" >
                    <td>
                        <a href="<?php echo $link_xem; ?>" class="lk_a1" ><?php echo $ten; ?></a>
                    </td>
                    <td>
                        <?php echo $email; ?>
                    </td>
                    <td>
                        <?php echo $dien_thoai; ?>
                    </td>
                    <td align="center" >
                        <a href="<?php echo $link_xem; ?>" class="lk_a1" >Xem</a>
                    </td>
                    <td align="center" >
                        <a href="<?php echo $link_xoa; ?>" class="lk_a1" >Xóa</a>
                    </td>
                </tr>
            <?php
        }
    ?>
    <tr>
        <td colspan="5" align="center" >
            <br>
            <?php
                for($i=1;$i<=$so_trang;$i++)
                {
                    $link_phan_trang="?thamso=hoa_don&trang=".$i;
                    echo "<a href='$link_phan_trang' class='phan_trang' >";
                        echo $i;
                    echo "</a> ";
                }
            ?>
            <br><br>
        </td>
    </tr>
</table>


- Bạn xem giải thích code (phần chữ xanh)  của file 'quan_ly_hoa_don.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
    $so_dong_tren_mot_trang=20;
    if(!isset($_GET['trang'])){$_GET['trang']=1;}
    // nếu không tồn tại biến 'trang' trên url thì biến này có giá trị là 1 , làm như vậy là để tính biến $vtbd
    // biến $vtbd là vị trí bắt đầu giới hạn menu trong câu truy vấn select , limit phía dưới , giá trị biến $vtbd tùy theo biến 'trang' trên url
    // (nghĩa là giá trị của biến $vtbd tùy vào trang đang hiện hành)

   
    $tv="select count(*) from hoa_don"; // đếm số dòng trong bảng 'hoa_don'
    $tv_1=mysql_query($tv);
    $tv_2=mysql_fetch_array($tv_1);
    $so_trang=ceil($tv_2[0]/$so_dong_tren_mot_trang);
    // tính số trang xuất ra của phần quản lý hóa đơn (nếu lớn hơn 20 thì số trang lớn hơn 1 )
    // số trang bằng tổng dữ liệu trong bảng 'hoa_don' chia cho số dòng (số hóa đơn) trong 1 trang rồi làm tròn số

   
    $vtbd=($_GET['trang']-1)*$so_dong_tren_mot_trang;
    // tính vị trí bắt đầu giới hạn của bảng 'hoa_don' tùy theo trang hiện hành
    // ở đây , nếu là trang 1 thì $vtbd=0 , nếu là trang 2 thì $vtbd=20 , nếu là trang 3 thì $vtbd=40 ...
    $tv="select * from hoa_don order by id desc limit $vtbd,$so_dong_tren_mot_trang";
    // lệnh truy cập vào bảng 'hoa_don' sắp xếp theo 'id' tăng dần với giới hạn là tùy theo trang hiện tại
    // ban đầu thì vị trí bắt đầu giới hạn là 0
    // lưu ý là sắp xếp theo 'desc' , nghĩa là xuất hóa đơn mới ra trước  
    $tv_1=mysql_query($tv);
?>
<table width="990px" class="tb_a1" >
// xuất ra bảng chứa danh sách các hóa đơn cới class là 'tb_a1' , class này sẽ được dùng trong file 'giao_dien.css'
    <tr style="background:#CCFFFF;height:40px;" > // hàng đầu tiên có chiều cao 40px và có màu nền là 1 mã màu (#CCFFFF)
        <td width="370px" ><b>Tên</b></td>
        <td width="300px" ><b>Email</b></td>
        <td width="120px" ><b>Điện thoại</b></td>
        <td align="center" width="100px" ><b>Sửa</b></td>
        <td align="center" width="100px" ><b>Xóa</b></td>
    </tr>
    <?php
        while($tv_2=mysql_fetch_array($tv_1))
        // xuất dòng dữ liệu từ bảng 'hoa_don' ra , dữ liệu được gán vào biến $tv_2 (biến này là 1 mảng)
        {
            $id=$tv_2['id']; // gán cột 'id' của dòng dữ liệu đang được lấy dữ liệu vào biến $id
            $ten=$tv_2['ten_nguoi_mua']; // gán cột 'ten_nguoi_mua' của dòng dữ liệu đang được lấy dữ liệu vào biến $ten
            $email=$tv_2['email']; // gán cột 'email' của dòng dữ liệu đang được lấy dữ liệu vào biến $email
            $dien_thoai=$tv_2['dien_thoai']; // gán cột 'dien_thoai' của dòng dữ liệu đang được lấy dữ liệu vào biến $dien_thoai
            $link_xem="?thamso=xem_hoa_don&id=".$id."&trang=".$_GET['trang'];
            // tạo link xem hóa đơn với biến 'thamso' trên url có giá trị là 'xem_hoa_don'
            // link xem hóa đơn cũng có biến 'id' trên url là cột 'id' của dòng dữ liệu đang được lấy

            // ở đây truyền thêm biến 'trang' trên url để tạo liên kết "Đóng" từ trang xem hóa đơn
            // (phải có biến này để biết vị trí trang trước đó mà trở về sau khi bấm nút "Đóng" )

            $link_xoa="?xoa_hoa_don=co&id=".$id;
            // tạo link xóa hóa đơn với biến 'xoa_hoa_don' trên url có giá trị là 'co'
            // link xóa cũng có biến 'id' trên url là cột 'id' của dòng dữ liệu đang được lấy

            ?>
                <tr class="a_1" >
                // xuất hàng chứa hóa đơn xuất ra từ bảng 'hoa_don' , hàng này có class là 'a_1'
                    <td>
                        <a href="<?php echo $link_xem; ?>" class="lk_a1" ><?php echo $ten; ?></a>
                        // xuất tên người gửi hóa đơn , đồng thời xuất ra liên kết xem hóa đơn với class là 'lk_a1'
                        // (class này được định dạng css trong file 'giao_dien.css')

                    </td>
                    <td>
                        <?php echo $email; ?>
                        // xuất email ra
                        // (class này được định dạng css trong file 'giao_dien.css')

                    </td>
                    <td>
                        <?php echo $dien_thoai; ?>
                        // xuất số điện thoại ra
                        // (class này được định dạng css trong file 'giao_dien.css')

                    </td>
                    <td align="center" >
                        <a href="<?php echo $link_xem; ?>" class="lk_a1" >Xem</a>
                        // xuất liên kết xem hóa đơn với class là 'lk_a1'
                        // (class này được định dạng css trong file 'giao_dien.css')

                    </td>
                    <td align="center" >
                        <a href="<?php echo $link_xoa; ?>" class="lk_a1" >Xóa</a>
                        // xuất liên kết xóa hóa đơn với class là 'lk_a1'
                        // (class này được định dạng css trong file 'giao_dien.css')

                    </td>
                </tr>
            <?php
        }
    ?>
    <tr>
        <td colspan="5" align="center" >
            <br>
            <?php
                for($i=1;$i<=$so_trang;$i++) // chạy từ trang 1 đến trang cuối cùng
                {
                    $link_phan_trang="?thamso=hoa_don&trang=".$i;
                    // tạo liên kết phân trang , liên kết phân trang đến trang nào thì biến 'trang' trên url có giá trị là trang đó
                    echo "<a href='$link_phan_trang' class='phan_trang' >";
                    // xuất liên kết phân trang với class là 'phan_trang'
                        echo $i;
                    echo "</a> ";
                }
            ?>
            <br><br>
        </td>
    </tr>
</table>


- Mình thực hiện mua thêm 2 đơn hàng rồi bấm vào liên kết 'Quản lý hóa đơn' tại trang chủ của trang quản trị thì nhận được kết quả sau :



- Khi mình bấm vào liên kết quản lý hóa đơn (ở file 'trang_chu_2.php' ) => web sẽ đến trang ?thamso=hoa_don , web sẽ tải file 'dieu_huong.php' và  gọi file 'quan_ly_hoa_don.php' bằng đoạn code sau :

case "hoa_don":
    include("chuc_nang/hoa_don/quan_ly_hoa_don.php");
break;

- Từ đó sẽ xuất ra trang quản lý hóa đơn