Hãy đăng ký thành viên để có thể dễ dàng trao đổi, giao lưu và chia sẻ về kiến thức đồ họa.
  1. Hãy đăng ký subscribe kênh Youtube mới của Việt Designer tại địa chỉ: Youtube.com/VietDesignerChannel để theo dõi các video về thiết kế đồ họa. Do trước đó kênh cũ bị Youtube quét không rõ lý do, trong thời gian chờ kháng cáo nếu các bạn thấy video trên diễn đàn bị die không xem được thì có thể vào kênh mới để tìm xem video sơ cua nhé.
    Loại bỏ thông báo

Làm sao để xoá giỏ hàng khi đăng xuất

Chủ đề thuộc danh mục 'Hỏi đáp - Thảo luận về web' được đăng bởi vhquocminhit, 12/3/13.

Lượt xem: 4,053

  1. vhquocminhit Thành viên cấp 2

    Xin chào! Mấy a giúp em giải quyết vấn đề "Làm sao để xoá giỏ hàng khi đăng xuất" này với.
    Code hiển thị giỏ hàng
    Code:
     private void HienThiGioHang()
        {
           
            HOAGAUBONG.Common.GioHang giohang = new HOAGAUBONG.Common.GioHang();
            giohang.Cartguid = CartGUID;
            XuLyLayGioHang laygiohang = new XuLyLayGioHang();
            laygiohang.Giohang = giohang;
            try
            {
                laygiohang.Thucthi();
            }
            catch
            {
                Response.Redirect("loi.aspx");
            }
            gridgiohang.DataSource = laygiohang.Ketqua;
            gridgiohang.DataBind();
            /* code này để kiểm tra có hàng chưa, nếu chưa thì hiện lên thông báo*/
            if (gridgiohang.Rows.Count == 0)
            {
                lbltotal.Visible = false;
                Label1.Text = "Chưa có sản phẩm nào trong giỏ hàng";
                Button2.Visible = false;
                Button1.Visible = false;
                butcapnhap.Visible = false;
            }
            else
            {
                lbltotal.Visible = true;
                Label1.Text = "Tổng tiền: ";
            }
        }
    Giỏ hàng này em không dùng Session đâu ạ.
    E xin được ví dụ như sau cho mấy a dễ hiểu:
    VD: Người A đăng nhập vào website và mua hàng, thanh toán xong => sau đó đăng xuất
    Người B đăng nhập vào website và mua hàng. Nhưng cái giỏ hàng của người A lại cộng dồn vào giỏ hàng của người B ( tức là giỏ hàng nó ko mất đi khi người A đăng xuất ).
    - Vậy bây giờ e khắc phục sao đây ạ

    ...
  2. Midoriniji

    Midoriniji Thành viên cấp 2

    Nói thiệt chưa từng thấy kiểu xử lý như thế này @@
    Nhìn code thì chịu thôi, mình ko rõ bạn sử lý thế nào nhưng thử xóa giỏ hàng khi khách hàng đăng xuất xem, mà thật bạn chuyển qua dùng session đi, bạn ko tính đến trường hợp 2 khách hàng đăng nhập cùng lúc ah
  3. vhquocminhit

    vhquocminhit Thành viên cấp 2

    ờ, tại mình mới học ASP nên nắm rõ :D ngu ngu á . hiihi
  4. vhquocminhit

    vhquocminhit Thành viên cấp 2

    mà bạn bày mình cách xoá giỏ hàng với. Mình làm đỡ thôi, để bảo vệ đồ án kỳ ni, sau này phát triển thêm
  5. banbaonylong

    banbaonylong Ko phải assmin

    set cái biến giỏ hàng bằng null khi ấn log out, khi login thì khởi tạo giỏ hàng mới

    //mà chẳng lẽ tất cả mọi người đều xài chung 1 giỏ hàng à? thế lỡ ông thầy kêu dùng 2 trình duyệt (==> 2 user) vào mua hàng thì bạn cắn lưỡi à? :-?
  6. vhquocminhit

    vhquocminhit Thành viên cấp 2

    :P à, cái giỏ hàng của mình, mình biết vì sao nó ko mất rồi, vì nó lưu cookies
    Code:
    public static string LayCartGuid()
            {
                if (HttpContext.Current.Request.Cookies["SANPHAM"] != null)
                {
                    return HttpContext.Current.Request.Cookies["SANPHAM"]["CartID"].ToString();
                }
                else
                {
                    Guid CartGUID = Guid.NewGuid();// Guid tạo ra 35 ký tự khác nhau theo ngẫu nhiên
                    HttpCookie cookie = new HttpCookie("SANPHAM");
                    cookie.Values.Add("CartID",CartGUID.ToString());
                    cookie.Expires = DateTime.Now.AddDays(30);
                    HttpContext.Current.Response.AppendCookie(cookie);
                    return CartGUID.ToString();
                }
            }
    Bây giờ mình viết câu lệnh xoá cookie cho nút đăng xuất như thế này đúng kô mấy bác:
    HttpCookie cookie = new HttpCookie("SANPHAM");
    cooki.Expries=DateTime.Now;

    ĐÚng hôk.hic
  7. Midoriniji

    Midoriniji Thành viên cấp 2

    HTML:
    protected void Login1_LoggedIn(object sender, EventArgs e)
        {
            Response.Cookies["LoginInfo"]["UserName"] = Login1.UserName;
            Response.Cookies["LoginInfo"]["PassWord"] = Login1.Password;
            Response.Cookies["LoginInfo"].Expires = DateTime.Now.AddMinutes(3);
            //xử lý khi đnhập
            //...
        }
    protected void Login1_LoggingOut(object sender, LoginCancelEventArgs e)
        {
            Response.Cookies["LoginInfo"].Expires = DateTime.Now.AddHours(-1);
            Page_Load(sender, e);
        }
    
    Login, log out như thế nhé, tùy bạn sử lý cho đúng
    vhquocminhit thích bài viết này
  8. vhquocminhit

    vhquocminhit Thành viên cấp 2

    thanks banj Midoriniji :)
  9. vhquocminhit

    vhquocminhit Thành viên cấp 2

    thanks bạn Midoriniji :)
  10. vhquocminhit

    vhquocminhit Thành viên cấp 2

    Bạn cho mình hỏi [NGU] cái này xíu :P
    Mình có 2 đoạn code kết nối dữ liệu lấy thủ tục SQL Server. Bạn cho mình hỏi đoạn CODE 1 với đoạn CODE 2 chức năng có giống nhau không. Nếu giống thì mình có thể dùng cách nào củng được hết hả.
    Nếu khác thì khác như thế nào
    Khi nào dùng CODE 1 và khi nào dùng CODE 2
    Mình cảm ơn bạn nhìu nhìu nge :)

    CODE 1:
    Code:
    public void ChenDuLieu()
            {
                ketnoi chuoiketnoi = new ketnoi();
                SqlConnection conect = new SqlConnection(chuoiketnoi.Chuoiketnoi());
                conect.Open();
                SqlCommand com = new SqlCommand();
                com.Connection = conect;
                com.CommandType = CommandType.StoredProcedure;
                com.CommandText = "DanhMucSanPham_Insert";
                com.Parameters.Add("@TENDANHMUCSANPHAM", SqlDbType.NVarChar).Value = Danhmucsp.Tendanhmucsanpham;
                com.ExecuteNonQuery();         
            }
    CODE 2:
    Code:
     public SqlDataSource ChenDulieu()
            {
                SqlDataSource sqldata = new SqlDataSource();
                ketnoi chuoiketnoi = new ketnoi();
                sqldata.ConnectionString = chuoiketnoi.Chuoiketnoi();
                sqldata.InsertCommandType = SqlDataSourceCommandType.StoredProcedure;
                sqldata.InsertCommand = "DanhMucSanPham_Insert";
                sqldata.InsertParameters("TENDANHMUCSANPHAM",Danhmucsp.Tendanhmucsanpham.ToString());
                return sqldata;
            }
  11. banbaonylong

    banbaonylong Ko phải assmin

    lớp ketnoi có gì trong đó? bạn đưa thế ai biết đc?

    code bạn quá rườm rà, chưa kể bạn mở kết nối xong bạn có đóng nó lại ko? mọi thứ đều làm bằng tay nên đây là điểm dở của ADO.net

    ví dụ 1 demo do mình code cách đây 1 năm...1 phần load dữ liệu đổ ra bảng, 1 phần insert dữ liệu vào database SQL

    Code:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data;
    using System.Data.SqlClient;
    using System.Configuration;
     
    /// <summary>
    /// Summary description for Contract
    /// </summary>
    public class Contract_DAL
    {
        //connection string
        string str = ConfigurationManager.ConnectionStrings["add"].ToString();
     
        public Contract_DAL()
        {
            //
            // TODO: Add constructor logic here
            //
        }
     
        public DataTable Load()
        {
            //mở kết nối
            SqlConnection cnn = new SqlConnection(str);
            cnn.Open();
            //mở SQL data adapter với chuỗi kết nối cnn
            SqlDataAdapter da = new SqlDataAdapter("Load_Contract", cnn);
            //chọn kiểu thực thi store procedure
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            //khởi tạo dataset
            DataSet ds = new DataSet();
            try
            {
                //đổ dữ liệu ra dataset
                da.Fill(ds, "Contract");
                return ds.Tables["Contract"];
            }
            catch
            {
                throw;
            }
            finally
            {
                //đóng kết nối
                ds.Dispose();
                da.Dispose();
                cnn.Close();
                cnn.Dispose();
            }
        }
     
        public int Insert(Contract c)
        {
            SqlConnection cnn = new SqlConnection(str);
            cnn.Open();
            SqlCommand cmd = new SqlCommand("Insert_Contract", cnn);
            cmd.CommandType = CommandType.StoredProcedure;
            try
            {
                cmd.Parameters.AddWithValue("@conName", c.ConName);
                cmd.Parameters.AddWithValue("@cuID", c.CuID);
                cmd.Parameters.AddWithValue("@con_Installation_date", c.Con_Installation_date);
                cmd.Parameters.AddWithValue("@conAddress", c.ConAddress);
                cmd.Parameters.AddWithValue("@conDictrict", c.ConDictrict);
                cmd.Parameters.AddWithValue("@cID", c.CID);
                cmd.Parameters.AddWithValue("@con_Warranty_date", c.Con_Warranty_date);
                cmd.Parameters.AddWithValue("@con_Person_doing", c.Con_Person_doing);
                cmd.Parameters.AddWithValue("@conValue", c.ConValue);
                cmd.Parameters.AddWithValue("@conStatus", c.ConStatus);
                cmd.Parameters.AddWithValue("@conHyperlink", c.ConHyperlink);
                cmd.Parameters.AddWithValue("@conDescription", c.ConDescription);
                return cmd.ExecuteNonQuery();
            }
            catch
            {
                throw;
            }
            finally
            {
                cmd.Dispose();
                cnn.Close();
                cnn.Dispose();
            }
        }
    }
    
  12. vhquocminhit

    vhquocminhit Thành viên cấp 2

    Lớp kết nối chỉ như thế này thôi
    Code:
    public class ketnoi
        {
            public string Chuoiketnoi() /*Chuoiketnoi=ConnectionString(), ta đặt tên gì củng được*/
            {
                return WebConfigurationManager.ConnectionStrings["SQL"].ConnectionString;/*lấy tư thư viện webconfig*/
            }
        }
    Thì mình mới học mà bạn, làm sao mình biết hết đc. hihi. Bạn giải đáp thắc mắc của mình giùm vs ^^
  13. vhquocminhit

    vhquocminhit Thành viên cấp 2

    À bạn Banbaonylong mình hỏi xí, có câu lệnh nào kiểm tra dữ liệu trong SQL vs VS không.
    Nghĩa là khi mình làm trang đăng ký, thì không cho phép người dùng mới đăng ký với tên đăng nhập đã có trong CSDL
  14. banbaonylong

    banbaonylong Ko phải assmin

    SQL procedure

    Code:
    @bien nvarchar(30)
     
    SELECT <Mã ID> FROM [Table User] WHERE [Tên User]=@bien
    1. tạo 1 method public bool checkavailable(string username)
    2. tạo câu lệnh thực thi SQL StoredProcedure với parameter truyền vào và username
    3. lấy kết quả đổ vào 1 biến result (chỉ lấy kết quả đầu tiên)
    4. nếu result != null ==>return false;
    5. else {return true;}
    vhquocminhit thích bài viết này
  15. vhquocminhit

    vhquocminhit Thành viên cấp 2

    Bạn ơi cho mình hỏi, trong ASP có công cụ toolbox nào viết giống định dạng theo yêu cầu của mình không (giống như thẻ pre trong HTML ấy)
    Nghĩa là khi ta xuống hàng thì nó hiển thị ra màn hình củng xuống hàng.
    Chứ mình viết trong textbox thì nó không xuống hàng mà viết trên 1 dòng :(
  16. banbaonylong

    banbaonylong Ko phải assmin

    <asp:TextBox id="TextBox 1" TextMode="multiline" runat="server" />
    Nguyễn Tất Thắng thích bài viết này
  17. vhquocminhit

    vhquocminhit Thành viên cấp 2

    không được bạn ơi. hiện tại mình đang dùng <asp:TextBox id="TextBox 1" TextMode="multiline" runat="server" /> đó. Nhưng nó vẫn nằm trên 1 dòng
  18. banbaonylong

    banbaonylong Ko phải assmin

    hiển thị thì thử

    <asp:Label runat="server" style="width:300px;" />
  19. vhquocminhit

    vhquocminhit Thành viên cấp 2

    Cụ thể như sau: Chức năng Admin là đăng sản phẩm.
    Trong Mô Tả Sản Phẩm thì từng yếu tố chi tiết sẽ xuống dòng (có yếu tố chi tiết dài hoặc ngắn, chứ không phải cái nào củng như nhau) (Cái này sử dụng <asp:TextBox id="TextBox 1" TextMode="multiline" runat="server" /> )
    Nhưng sau khi hiển thị ra trang sản phẩm của khách hàng thì nó không xuống hàng mà nằm trên 1 dòng. (cái này sử dụng <asp:Label runat="server" style="width:300px;" />)
    Nhưng vẫn không được bạn ạ
  20. banbaonylong

    banbaonylong Ko phải assmin


    bạn xem coi lưu trong database nó chỉ 1 dòng hay sao :D

Ủng hộ diễn đàn