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

Phần 22 - Tạo hóa đơn mua hàng

- Tiếp theo tại file 'index.php' , bạn thêm đoạn code sau trước dòng code if(isset($_POST['cap_nhat_gio_hang'])) :


function thong_bao_html($chuoi_thong_bao)
{
    $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
    ?>
        <html><head>
          <meta charset="UTF-8">
          <title>Thông báo</title></head>
        <body>
            <style type="text/css">
            a.trang_truoc_c8w{text-decoration:none;color:blue;font-size:36px;margin-left:50px}
            a.trang_truoc_c8w:hover{color:red;}
            </style>
            <br><br><br><br>
            <a href="<?php echo $lien_ket_trang_truoc; ?>" class="trang_truoc_c8w" >Bấm vào đây để trở về trang trước</a>
            <script type="text/javascript">
                alert("<?php echo $chuoi_thong_bao; ?>");
            </script>
        </body>
        </html>
    <?php
    exit();
}
function thong_bao_html_roi_chuyen_trang($chuoi_thong_bao,$link_chuyen_trang)
{
    $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
    ?>
        <html><head>
          <meta charset="UTF-8">
          <title>Thông báo</title></head>
        <body>
            <script type="text/javascript">
                alert("<?php echo $chuoi_thong_bao; ?>");
                window.location="<?php echo $link_chuyen_trang; ?>";
            </script>
        </body>
        </html>
    <?php
    exit();
}
if(isset($_POST['thong_tin_khach_hang']))
{
    include("chuc_nang/gio_hang/thuc_hien_mua_hang.php");
}

- Code trên tạo ra hàm 'thong_bao_html' và 'thong_bao_html_roi_chuyen_trang'

- Hàm 'thong_bao_html' có chức năng tạo ra 1 hộp thông báo gì đó mỗi khi gọi lại hàm 'thong_bao_html'.Lưu ý khi gọi lại hàm này thì nội dung xuất ra sẽ có thẻ 'html' (có meta charset="UTF-8" nhằm gõ dấu tiếng việt)

- Hàm 'thong_bao_html_roi_chuyen_trang' tương tự như hàm 'thong_bao_html' nhưng sau khi hiển thị thông báo thì tiến hành chuyển trang dựa vào thông số thứ hai truyền vào ( $link_chuyen_trang )

- Bằng cách kiểm tra biến form post 'thong_tin_khach_hang' có tồn tại hay không để gọi file 'thuc_hien_mua_hang.php' ra sử dụng(nếu có tồn tại thì sử dụng)

- Bạn tạo file 'thuc_hien_mua_hang.php' trong thư mục 'gio_hang' rồi sao chép nội dung này vào file 'thuc_hien_mua_hang.php' :

<?php
    if(isset($_SESSION['id_them_vao_gio']))
    {
        $ten_nguoi_mua=trim($_POST['ten_nguoi_mua']);
        $email=trim($_POST['email']);
        $dien_thoai=trim($_POST['dien_thoai']);
        $dia_chi=trim(nl2br($_POST['dia_chi']));
        $noi_dung=nl2br($_POST['noi_dung']);
        if($ten_nguoi_mua!="" and $dien_thoai!="" and $dia_chi!="")
        {
            $hang_duoc_mua="";
            for($i=0;$i<count($_SESSION['id_them_vao_gio']);$i++)
            {
                $hang_duoc_mua=$hang_duoc_mua.$_SESSION['id_them_vao_gio'][$i]."[|||]".$_SESSION['sl_them_vao_gio'][$i]."[|||||]";
            }      
            $tv="INSERT INTO hoa_don (
            id ,
            ten_nguoi_mua ,
            email ,
            dia_chi ,
            dien_thoai ,
            noi_dung ,
            hang_duoc_mua
            )
            VALUES (
            NULL ,
            '$ten_nguoi_mua',
            '$email',
            '$dia_chi',
            '$dien_thoai',
            '$noi_dung',
            '$hang_duoc_mua'
            );";
            mysql_query($tv);
            unset($_SESSION['id_them_vao_gio']);
            unset($_SESSION['sl_them_vao_gio']);
            thong_bao_html_roi_chuyen_trang("Cảm ơn bạn đã mua hàng tại web site chúng tôi","index.php");
        }
        else
        {
            thong_bao_html("Không được bỏ trống tên người mua , điện thoại , địa chỉ");
            trang_truoc();
            exit();
        }
    }
?>

- Đoạn code trên dùng lệnh insert trong mysql để thêm hóa đơn (thêm dòng dữ liệu vào bảng table).Lệnh này bạn hiểu như sau :

insert into tên bảng (
tên cột 1,
tên cột 2,
tên cột 3,
...
)
values (
'giá trị cột 1'
'giá trị cột 2'
'giá trị cột 3'
...
)

Ví dụ :

insert into menu_ngang (
id,
ten,
loai_menu
)
values (
NULL,
'Sách',
'san_pham'
)

+ Mã insert trên là thêm vào bảng 'menu_ngang' 1 dòng dữ liệu trong đó cột id có giá trị là tăng tự động ( NULL ), cột 'ten' có giá trị là 'Sách' , cột 'loai_menu' có giá trị là 'san_pham'

+ Trở lại đoạn code trong file 'thuc_hien_mua_hang.php'.Để chạy đoạn code này thì cần phải có sản phẩm trong giỏ , như vậy ít nhất là phải tồn tại biến session 'id_them_vao_gio' => cần có dòng code if(isset($_SESSION['id_them_vao_gio']))

+ Các giá trị của biểu mẫu sẽ được lấy thông qua cách viết $_POST và được truyền nối vào biến 'tv' (bạn lưu ý trước đó các biến 'ten_nguoi_mua','email','dia_chi','noi_dung' đã lấy giá trị từ biểu mẫu bằng cách viết $_POST )

+ Cột 'hang_duoc_mua' sẽ nhận giá trị từ biến 'hang_duoc_mua' và cũng được truyền nối vào biến 'tv'.Biến 'hang_duoc_mua' được tạo ra bằng cách cộng dồn giá trị của mảng session 'id_them_vao_gio' và session 'sl_them_vao_gio' (code sẽ chạy qua mảng session 'id_them_vao_gio' bằng vòng lặp 'for' rồi cộng dồn giá trị).Lưu ý là dùng cách viết [|||] để phân tách id , số lượng của một sản phẩm thêm vào giỏ và dùng cách viết [|||||] là để tách các sản phẩm khác nhau ra (bao gồm 1 hoặc nhiều id,số lượng khác nhau).Trong trang quản trị sẽ dùng hàm 'explode' để phân tách dựa trên 2 cách viết này rồi xuất các sản phẩm được mua ra

+ Ở đây có 2 trường hợp : trường hợp 1 là biểu mẫu hợp lệ thì thêm dữ liệu bình thường , trường hợp 2 là không hợp lệ vì chưa điền thông tin tên người mua , điện thoại , địa chỉ thì sẽ xuất ra thông báo "Không được bỏ trống tên người mua , điện thoại , địa chỉ"

+ Dòng code if($ten_nguoi_mua!="" and $dien_thoai!="" and $dia_chi!="") nhằm để chia ra trường hợp như trên

+ Nếu rơi vào trường hợp 1 thì tạo biến 'tv' với lệnh 'insert' rồi sau đó dùng lệnh 'mysql_query' để truy vấn câu lệnh insert vào trong mysql.Sau đó hiện thông báo "Cảm ơn bạn đã mua hàng tại web site chúng tôi" bằng hàm 'thong_bao_html_roi_chuyen_trang' rồi chuyển về trang 'index.php'  (tức là trang chủ).Sau đó xóa mảng session 'id_them_vao_gio' và mảng session 'sl_them_vao_gio' bằng lệnh unset (làm rỗng giỏ hàng)

+ Nếu rơi vào trường hợp 2 thì sẽ xuất ra thông báo "Không được bỏ trống tên người mua , điện thoại , địa chỉ" rồi sau đó quay về trang trước bằng hàm 'trang_truoc' chứ không chuyển sang trang chủ ('index.php')

- Lưu ý là hàm 'nl2br' là tạo ra ký tự xuống dòng khi người dùng xuống trong thẻ 'textarea'

+ Ngoài ra tại vị trí thực hiện code này do chưa có thẻ 'html' (code đã chuyển trang hoặc quay về trang trước trước khi xuất thẻ 'html' ở file 'index.php' , bạn để ý rằng file 'index.php' nếu có gọi file 'thuc_hien_mua_hang.php' thì cũng gọi trước thẻ 'html') nên khi xuất thông báo thì nên viết lại thẻ 'html' cùng với 'meta charset="UTF-8"'

- Sau đó bạn thử mua hàng thì sau khi mua hàng (bao gồm việc điền 'Thông tin mua hàng') thì sẽ nhận được thông báo "Cảm ơn bạn đã mua hàng tại web site chúng tôi" , đồng thời bạn vào bảng 'hoa_don' (trong phpmyadmin) thì sẽ thấy 1 dòng dữ liệu được thêm vào.Ở trang quản trị sẽ nhờ vào bảng 'hoa_don' này mà biết ai mua hàng tại web.Ở đây mình thử mua hàng thì nhận được 1 dòng dữ liệu như sau trong bảng 'hoa_don' :


- Như vậy là làm xong phần thêm hóa đơn vào trong cơ sở dữ liệu (đã xong việc thêm dữ liệu vào bảng 'hoa_don').Kết thúc phần này thì nội dung trang 'index.php' tương tự như sau :


<?php
    session_start();
    include("ket_noi.php");
    function trang_truoc(){
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Đang chuyển về trang trước</title></head>
            <body>
                <script type="text/javascript">
                    window.history.back();
                </script>   
            </body>
            </html>
        <?php
    }
    function thong_bao_html($chuoi_thong_bao)
    {
        $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Thông báo</title></head>
            <body>
                <style type="text/css">
                a.trang_truoc_c8w{text-decoration:none;color:blue;font-size:36px;margin-left:50px}
                a.trang_truoc_c8w:hover{color:red;}
                </style>
                <br><br><br><br>
                <a href="<?php echo $lien_ket_trang_truoc; ?>" class="trang_truoc_c8w" >Bấm vào đây để trở về trang trước</a>
                <script type="text/javascript">
                    alert("<?php echo $chuoi_thong_bao; ?>");
                </script>
            </body>
            </html>
        <?php
        exit();
    }
    function thong_bao_html_roi_chuyen_trang($chuoi_thong_bao,$link_chuyen_trang)
    {
        $lien_ket_trang_truoc=$_SERVER['HTTP_REFERER'];
        ?>
            <html><head>
              <meta charset="UTF-8">
              <title>Thông báo</title></head>
            <body>
                <script type="text/javascript">
                    alert("<?php echo $chuoi_thong_bao; ?>");
                    window.location="<?php echo $link_chuyen_trang; ?>";
                </script>
            </body>
            </html>
        <?php
        exit();
    }
    if(isset($_POST['thong_tin_khach_hang']))
    {
        include("chuc_nang/gio_hang/thuc_hien_mua_hang.php");
    }
    if(isset($_POST['cap_nhat_gio_hang']))
    {
        include("chuc_nang/gio_hang/cap_nhat_gio_hang.php");
        trang_truoc();
    }
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Web bán hàng</title>
        <link rel="stylesheet" type="text/css" href="giao_dien/giao_dien.css">
    </head>
    <body>
        <center>
            <table width="990px">
                <tr>
                    <td colspan="3"><img src="hinh_anh/banner.JPG" ></td>
                </tr>
                <tr>
                    <td colspan="3" height="50px" >
                        <?php
                            include("chuc_nang/menu_ngang/menu_ngang.php");
                        ?>
                    </td>
                </tr>
                <tr>
                    <td width="170px" valign="top" >
                    <?php
                        include("chuc_nang/menu_doc/menu_doc.php");
                    ?>
                    </td>
                    <td width="650px" valign="top" >
                        <?php
                            include("chuc_nang/dieu_huong.php");
                        ?>
                    </td>
                    <td width="170px" valign="top" >
                    <?php
                        include("chuc_nang/tim_kiem/vung_tim_kiem.php");
                    ?>
                    </td>
                </tr>
                <tr>
                    <td colspan="3">Footer</td>
                </tr>
            </table>
        </center>
    </body>
</html>