09/10/2018, 23:15

Giỏ hàng bị lỗi - Help Help Help !

Chào mọi người,

Hiện nay mình đang xây dựng 1 shop bán sách online, làm mãi rồi hôm nay mới đến phần xây dựng giỏ đi chợ, tuy nhiên mình lại gặp một số lỗi như sau :

Lỗi 1: Khi cập nhật số lượng thì click 2 lần mới thấy hiển thị đúng thông tin mới cập nhật, nhưng khi click lần thứ 3 thì nó lại quay trở về giá trị ban đầu.

Lỗi 2: Khi thêm càng nhiều tiêu đề sách vào giỏ hàng thì không hiểu sao bảng hiển thị các mặt hàng càng ngày càng cách xa so với chữ "GIỎ HÀNG CỦA BẠN".

Có một vấn đề ở đây là lỗi thứ 2 chỉ xảy ra khi sử dụng trình duyệt Internet Explorer mà không xảy ra khi dùng FireFox.


Xin mọi người giúp mình sửa với. Cảm ơn rất nhiều !

À, bạn xem demo trang web mình đang xây dựng tại địa chỉ http://www.dhts.edu.vn/tttn/bookshop2.

Dưới đây là mã nguồn của giỏ hàng : (file cart.php)

PHP Code:
<? // SHOPPING CART
   session_start();
   session_register('cart');
   include('includes/cart_functions.php');
   include('header.php');


   @ $new = $_GET***91;'new'***93;; // Lay bien new tu trinh duyet, new = book_id
   if ($new) // new item selected
   {
       if (!isset($_SESSION***91;'cart'***93;))
      {
         $_SESSION***91;'cart'***93;=array();
         $_SESSION***91;'total_price'***93;='0';
      }
       if (isset($_SESSION***91;'cart'***93;***91;$new***93;))
         $_SESSION***91;'cart'***93;***91;$new***93;++;
       else
         $_SESSION***91;'cart'***93;***91;$new***93; = 1;
         $_SESSION***91;'total_price'***93; = get_total_price($_SESSION***91;'cart'***93;);
   } // end if ($new)


  echo '<center><h3>GIỎ HÀNG CỦA BẠN</center></h3> ';
  if ($_SESSION***91;'cart'***93; && (array_count_values($_SESSION***91;'cart'***93;)))
  {
    // Neu co san pham trong gio hang thi
    // hien thi gio hang


  echo '<center>';


  echo '<table style="border-collapse:collapse" bordercolor="#C7E2EF" width="96%" border="1" cellspacing="0" cellpadding="2">
  <tr>
    <td width="3%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">STT </div></td>
    <td width="57%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">Tên sách </div></td>
    <td width="10%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">Đơn giá </div></td>
    <td width="9%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">Số lượng </div></td>
    <td width="8%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">K.lượng </div></td>
    <td width="13%" bgcolor="#FFFFE6" class="morehlt"><div align="center" class="style4">Thành tiền </div></td>
  </tr> ';
  echo '<form action=cart.php method=post name=form1>';

  //Hien thi tung mat hang theo dong
  $total_weight = get_total_weight($_SESSION***91;'cart'***93;);
  $total_price = 0;
  $stt=0;
  foreach  ($_SESSION***91;'cart'***93; as $book_id => $qty)
    {

               $price = get_book_price($book_id);
             $sub_total_price = $price * $qty;
             $book_title = get_book_title($book_id);
             $weight = get_book_weight($book_id);
             $total_price += $sub_total_price;
             $stt++;


   echo '<tr>
    <td><div align="center">'.$stt.'</div></td>
    <td><div align="left">&nbsp;&nbsp;<b><a href=main.php?page=book_details&book_id='.$book_id.'>'.$book_title.'</a></b></div></td>
    <td><div align="right">'.number_format($price).'</div></td>
    <td><div align="right"><input type="text" name='.$book_id.' value="'.$qty.'" size="3" style="TEXT-ALIGN: right" /></div></td>
    <td><div align="right">'.$weight.' g</div></td>
    <td><div align="right">'.number_format($sub_total_price).' VNĐ</div></td>
        </tr>';
   } //Ket thuc hien thi cac mat hang theo dong
  echo '<tr>
    <td></td>
    <td><div align="right"><strong>Tổng cộng: </strong></div></td>
    <td colspan="3"><div align="right"><b>'.number_format($total_weight).' g</b></div></td>
    <td><div align="right"><b>'.number_format($total_price).' VNĐ</b></div></td>
  </tr>';

echo '</table></center>';
      $target = 'index.php';
      if ($new)  // Neu da chon mua 1 quyen sach, tiep tuc mua hang o category do
        {
                $details = get_catid_of_book($new);
            if ($details)
            $target = 'main.php?page=product&cat_id='.$details;
        }

         echo '<br /><br /><center>';
         echo '<a href='.$target.'><img src=images/muatiep.gif alt="Tiếp tục mua hàng"></img></a>';
         echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         echo '<a href=delete_cart.php><img src=images/xoagiohang.gif alt="Trả lại toàn bộ"></img></a>';
         echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
        echo '<input type="hidden" name="save" value="TRUE">';
         echo '<input type="image" alt="Cập nhật giỏ hàng" style="cursor:hand" src = "images/capnhat.gif" onclick="doUpdate();" >';
         echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';
         echo '<a href=checkout.php><img   alt="Đặt hàng" src=images/dathang.gif></img></a></center>';
echo '<br><br><br>';
echo '<p class="style6">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="style5"> + Trên đây là các mặt hàng đã có trong giỏ, bạn có thể thay đổi số lượng của   từng sản phẩm, nếu muốn loại bỏ một sản phẩm nào đó chọn số lượng là 0 hay xóa   bỏ ô số lượng tương ứng, sau đó nhấn vào <strong>Cập nhật</strong>. <br />
  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ Sau khi đã lựa chọn xong các sản phẩm vừa ý, bạn hãy chọn <strong>Đặt hàng</strong> để tiếp tục phiên mua bán. <br />
  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ Để quay lại mua sản phẩm khác chọn <strong>Mua tiếp</strong>. <br />
  <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;+ Nếu không muốn mua các sản phẩm   này, bạn chọn <strong>Hủy bỏ</strong>. </span></p> ';


echo '</form>';


   }

    // Ket thuc hien thi gio hang

  else // neu gio hang rong
    {
        echo '<center><b>Không có sản phẩm nào trong Giỏ hàng của bạn.</b>';
        echo '<br><br>';
        echo 'Mời bạn <a href=main.php?page=product&cat_id=1>tiếp tục mua hàng</a>';

        echo '<br><br><br><br><br><br><br><br><br><br><br></center>';
    }


   echo '<br>';

   if ($_POST***91;'save'***93;)
   {
         foreach ($_SESSION***91;'cart'***93; as $book_id => $qty)
         {


           if ($_POST***91;$book_id***93;==0) // Neu gia tri trong form bang 0
             unset ($_SESSION***91;'cart'***93;***91;$book_id***93;);
           else
             $_SESSION***91;'cart'***93;***91;$book_id***93; = $_POST***91;$book_id***93;;
         }
         $_SESSION***91;'total_price'***93; = get_total_price($_SESSION***91;'cart'***93;);


   }

   include('footer.php');
?>
<script language = "javascript">
function doUpdate()
{
  document.form1.submit();
}


</script>

<link href="css/valhalla2.css" rel="stylesheet" type="text/css" />
<style type="text/css">
<!--
.style4 {font-size: 11px; }
.style5 {font-size: 12px}
.style6 {color: #666666}
-->
</style>
mrsinguyenus viết 01:21 ngày 10/10/2018
Đang xem mả nguồn, nhưng mình thấy bạn cũng nên giới hạn số lượng khi đặt hàng vì người ta có thể đặt một con số quá lớn...
trunglg viết 01:18 ngày 10/10/2018
Quote Được gửi bởi mrsinguyenus View Post
Đang xem mả nguồn, nhưng mình thấy bạn cũng nên giới hạn số lượng khi đặt hàng vì người ta có thể đặt một con số quá lớn...
Cảm ơn bạn đã góp ý, vấn đề kiểm tra các thông số trong form mình sẽ làm sau. Hiện giờ làm sao cho chạy được đã.
vunam viết 01:23 ngày 10/10/2018
Đã test được chưa sao mình test tại http://www.dhts.edu.vn/tttn/bookshop2 không thấy lỗi như bạn nói.
"Lỗi 1: Khi cập nhật số lượng thì click 2 lần mới thấy hiển thị đúng thông tin mới cập nhật, nhưng khi click lần thứ 3 thì nó lại quay trở về giá trị ban đầu."nếu bị như thế này bạn sau khi cập nhật nên cho chuyển đến 1 trang khác "trang rỗng thôi" dùng thẻ Meta trong trang này để reset lại trình duyệt khoảng 5 giây sau đó chuển lại về cart.php.Hy vọng đúng
trunglg viết 01:19 ngày 10/10/2018
Quote Được gửi bởi vunam View Post
Đã test được chưa sao mình test tại http://www.dhts.edu.vn/tttn/bookshop2 không thấy lỗi như bạn nói.
"Lỗi 1: Khi cập nhật số lượng thì click 2 lần mới thấy hiển thị đúng thông tin mới cập nhật, nhưng khi click lần thứ 3 thì nó lại quay trở về giá trị ban đầu."nếu bị như thế này bạn sau khi cập nhật nên cho chuyển đến 1 trang khác "trang rỗng thôi" dùng thẻ Meta trong trang này để reset lại trình duyệt khoảng 5 giây sau đó chuển lại về cart.php.Hy vọng đúng
Mình vẫn gặp lỗi đó. Không thể hiểu nổi nữa
trunglg viết 01:27 ngày 10/10/2018
Mình đã sửa được lỗi 1 rồi, còn lỗi 2 thì ai biết cách sửa thì giúp mình với.

Lỗi 2: Khi thêm càng nhiều tiêu đề sách vào giỏ hàng thì không hiểu sao bảng hiển thị các mặt hàng càng ngày càng cách xa so với chữ "GIỎ HÀNG CỦA BẠN".

Có một vấn đề ở đây là lỗi thứ 2 chỉ xảy ra khi sử dụng trình duyệt Internet Explorer mà không xảy ra khi dùng FireFox.
mrsinguyenus viết 01:18 ngày 10/10/2018
Lổi hai là do bạn bố trí thẻ table và div bạn thử gán thuộc tính cho nó là top thử xem
trunglg viết 01:25 ngày 10/10/2018
Quote Được gửi bởi mrsinguyenus View Post
Lổi hai là do bạn bố trí thẻ table và div bạn thử gán thuộc tính cho nó là top thử xem
Nếu bị lỗi do thẻ thì tại sao FireFox lại không bị mà chỉ bị khi dùng IE ?
trunglg viết 01:20 ngày 10/10/2018
Quote Được gửi bởi lkn View Post
Còn 1 lỗi logic nữa là khi cập nhật giỏ hàng xong thì bị mất refer, bạn nên thêm cái check refer, nếu là cập nhật giỏ hàng thì giữ nguyên refer cũ
Mình đã giữ được refer link nhưng khi update cart nhiều lần thì không giữ được. Bạn biết cách không ?
vunam viết 01:26 ngày 10/10/2018
Bạn thử vứt cái biến refe xuống cuối cùng của khối lệnh php xem nào!Sau khi cập nhật refe vẫn giữ nguyên không gọi lại index.php nữa!Hoạc là thay đổi lai if ($new),if(nếu chua mua sách){gán refer='index.php';}else{gán refer bằng refer link category}.Thử thay đổi theo 1 trong 2 cách như thế xem thế nào
Bài liên quan
0