Asp.net Sepet Uygulaması
Ben bir ASP.Net E-ticaret sitesi yapıyorum, fakat sepeteat buton içeriğini ve kullanıcı veya oturum bazlı sepetdetay sayfasını yazamadım, bana yardımcı olabilirmisiniz??
Acaba üyegiriş.aspx sayfamdamı sorun var? çünkü üyegirişi yaptıktan sonra sepete ekleyeceğine tekrar başa dönüp işleme anasayfadan başlıyor??
Burçin şunu dedi: SqlConnection cnn; protected void Page_Load(object sender, EventArgs e) { cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionWind"].ConnectionString); if(!Page.IsPostBack) { return; } } protected void Button1_Click(object sender, EventArgs e) { cnn.Open(); SqlCommand cmd = new SqlCommand("select * from Kullanıcı where KullanıcıAdı=@kadi and Sıfre=@sifre", cnn); cmd.Parameters.AddWithValue("@kadi", txtBox1.Text); cmd.Parameters.AddWithValue("@sifre", txtBox2.Text); SqlDataReader dr = cmd.ExecuteReader(); if(dr.Read()==true) { Session["KullanıcıID"] = dr["ID"]; Session["AdSoyad"] = dr["KullanıcıAdı"]; Response.Redirect("Anasayfa.aspx"); } else { lblGiris.Visible = true; lblGiris.Text = "E-Mail ya da Parola yanlış girildi"; lblGiris.ForeColor = System.Drawing.Color.DarkRed; } cnn.Close(); } yukarıdaki kodda üyegiriş sayfam, sizin dediğiniz kodu sepete at butonun click indemi yazıcam? |
Onur'un dediği doğru.
Kodlarda:
Session["KullanıcıID"] = dr["ID"]
Yeri geçiyor. Yani zaten Session'da ID'yi aldırmışsın. Ekstra bir şey yapmana gerek yok. O halde Onur'un dediği gibi yapmana gerek yok çünkü zaten "aldırmışsın".
Ama adını başka yerlerde farklı kullanmışsın.
Session["ID"] = dr["ID"]
şeklinde yap.
dediğiniz şekilde üyegiriş .aspx te Session["ID"] = dr["ID"] yaptım, fakat sepete at butonuna tıklayınca sadece veritabanına atıyor orası tamam ama sepete ekledğim ürünü sepete at butonuna tıklayınca sepetdetay.aspx e yönlendirip orda görmek istiyorum, nasıl yapabilirim?? sepetdetay.aspx sayfam şu; SqlConnection cnn; protected void Page_Load(object sender, EventArgs e) { cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionWind"].ConnectionString); if (IsPostBack) return; SepetGetir(); } private void SepetGetir() { if(Session["sepet"] !=null) { cnn.Open(); SqlDataAdapter da = new SqlDataAdapter("select s.ID,ü.ÜrünAdi,ü.Fiyat,ü.Stok,s.Adet from Ürün ü join Sepet s on ü.ID=s.ÜrünID", ConfigurationManager.ConnectionStrings["ConnectionWind"].ConnectionString); DataTable dt = new DataTable(); da.Fill(dt); dt = ataTable)Session["sepet"]; DataList1.DataSource = dt.DefaultView; DataList1.DataBind(); cnn.Close(); } } protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if(e.CommandName.ToString()=="sil") { Sil(e.CommandArgument.ToString()); SepetGetir(); } } public void Sil(string ID) { DataTable dt = new DataTable(); if(HttpContext.Current.Session["sepet"] !=null) { dt = ataTable)HttpContext.Current.Session["sepet"]; for (int i = 0; i < dt.Rows.Count; i++) { if(dt.Rows["ID"].ToString()==ID) { dt.Rows.Delete(); HttpContext.Current.Session["sepet"] = dt; break; } } } } protected void btnSiparis_Click(object sender, EventArgs e) { ifataList1 == null) { SepetGetir(); } else { Response.Redirect("Adres.aspx"); } }
Burçin şunu dedi: dediğiniz şekilde üyegiriş .aspx te Session["ID"] = dr["ID"] yaptım, fakat sepete at butonuna tıklayınca sadece veritabanına atıyor orası tamam ama sepete ekledğim ürünü sepete at butonuna tıklayınca sepetdetay.aspx e yönlendirip orda görmek istiyorum, nasıl yapabilirim?? sepetdetay.aspx sayfam şu; SqlConnection cnn; protected void Page_Load(object sender, EventArgs e) { cnn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionWind"].ConnectionString); if (IsPostBack) return; SepetGetir(); } private void SepetGetir() { if(Session["sepet"] !=null) { cnn.Open(); SqlDataAdapter da = new SqlDataAdapter("select s.ID,ü.ÜrünAdi,ü.Fiyat,ü.Stok,s.Adet from Ürün ü join Sepet s on ü.ID=s.ÜrünID", ConfigurationManager.ConnectionStrings["ConnectionWind"].ConnectionString); DataTable dt = new DataTable(); da.Fill(dt); dt = <img src=../Resimler/Smiley/7.gif>ataTable)Session["sepet"]; DataList1.DataSource = dt.DefaultView; DataList1.DataBind(); cnn.Close(); } } protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e) { if(e.CommandName.ToString()=="sil") { Sil(e.CommandArgument.ToString()); SepetGetir(); } } public void Sil(string ID) { DataTable dt = new DataTable(); if(HttpContext.Current.Session["sepet"] !=null) { dt = <img src=../Resimler/Smiley/7.gif>ataTable)HttpContext.Current.Session["sepet"]; for (int i = 0; i < dt.Rows.Count; i++) { if(dt.Rows<i>["ID"].ToString()==ID) { dt.Rows<i>.Delete(); HttpContext.Current.Session["sepet"] = dt; break; } } } } protected void btnSiparis_Click(object sender, EventArgs e) { if<img src=../Resimler/Smiley/7.gif>ataList1 == null) { SepetGetir(); } else { Response.Redirect("Adres.aspx"); } } |
SepetDetay.aspx'e değil, Sepete At butonun altına insert işlemi yaptıktan sonra Redirect yazman lazım. Yani şöyle:
// sen şu komutu yazmışsın
cnn.Open();
SqlCommand com = new SqlCommand("Insert into Sepet(KullanıcıID, ÜrünID, Adet) values ('"+Session["ID"]+"', '"+Request.QueryString["UrunID"]+"', '"+txtAdet.Text+"'", cnn);
com.ExecuteNonQuery();
cnn.Close();
// buraya Redirect yapılacak, aşağıdaki gibi
Repsonse.Redirect("SepetDetay.aspx");
Sepete attıktan sonra SepetDetay'a yönlenecektir.
o şekilde yaptım fakat sepetdetay.aspx te datalist gözükmüyor sadece sipariş butonu gözüküyor