Member 13606640 Ответов: 1

Как вставить данные корзины в другую таблицу .


я заполнил свою корзину из таблицы services с помощью типа данных list <>. Теперь я хочу вставить выбранные данные службы в таблицу "заказы".
Страница мои услуги код для добавления услуги в корзину .скажите, пожалуйста, как можно добавить элемент в корзину в таблицу заказов ?


Что я уже пробовал:

это код моей сервисной страницы, где мы добавляем сервис в корзину.
public List<products> product_list = new List<products>();
   static List<products> cart_list = new List<products>();
   DataAccess da = new DataAccess();
   DataTable dt = new DataTable();
   Login l = new Login();
   protected void Page_Load(object sender, EventArgs e)
   {
       //if (!Page.IsPostBack) ;
       {
           Load_products();
           if (Request.QueryString.AllKeys.Contains("pro_id") && Request.QueryString.AllKeys.Contains("action"))
           {
               string pro_id = Request.QueryString["pro_id"];
               string action = Request.QueryString["action"];
               if (action.Equals("add"))
               {
                   add_to_cart(pro_id);

               }
           }

       }
   }
  /* private void fetchServices()
   {
       da.OpenConnection();
       da.ProcName = "FetchServices";
       da.CreateCommandObject();
       dt = da.FillDataTable();
       DropDownList1.DataSource = dt;
       DropDownList1.DataTextField = "Service_Name";
       DropDownList1.DataValueField = "Service_ID";
       DropDownList1.DataBind();
   }
   */
  void Load_products()
   {
       SqlConnection con = new SqlConnection(@"Data Source=STUDY-BOOK;Initial Catalog=groominglounge;Integrated Security=True");
       con.Open();
       string query = "select * from G_services";
       SqlCommand cmd = new SqlCommand(query, con);
       SqlDataReader reader = cmd.ExecuteReader();
       if (reader.HasRows)
       {
           while (reader.Read())
           {
               product_list.Add(new products(reader["id"].ToString(),reader["Service_Name"].ToString(), reader["Service_price"].ToString(), reader["Service_img"].ToString()));
           }
       }
       con.Close();

   }

   void add_to_cart(string product_id)
   {
       var product = product_list.Where(x=>x.id == product_id);
       foreach(var data in product)
       {
           cart_list.Add(data);
       }
       Session["cart"] = cart_list;
   }

1 Ответов

Рейтинг:
2

Vincent Maverick Durano

Вот мой взгляд на эту тему.

У вас есть два варианта сделать это. Один из них заключается в использовании базы данных для хранения заказов на корзину клиентов. Возможно, Вам потребуется сохранить идентификатор клиента или что-то, что идентифицирует клиента. Сохраните этот идентификатор вместе с заказами на корзину во временной таблице в базе данных. Теперь, когда клиент подтверждает заказ, вы можете легко запросить свою базу данных, а затем сохранить фактический заказ в вашей окончательной таблице заказов.

В качестве альтернативы вы можете использовать сеанс, как показано здесь: Сеансы и тележки для покупок[^]

Если бы вы спросили меня, я бы предпочел вариант 1 с использованием базы данных, потому что мы действительно не можем полагаться на сеансы для хранения данных. Почему это так? В ASP.NET пул приложений часто повторяется, и это, как правило, находится вне нашего контроля. Когда это произошло, все это состояние в памяти теряется.


Member 13606640

на самом деле я новичок в asp.net . пожалуйста, объясните мне, как хранить идентификатор клиента и данные корзины в базе данных ? спасибо за ваш ответ .

Vincent Maverick Durano

Вы используете ADO.NET или EF для вашего доступа к данным? Хранение данных в базе данных очень прямолинейно. Вам просто нужно сделать вставку. Пожалуйста, используйте google get more example.

Member 13606640

я использую доступ к вспомогательным данным DB . я знаю запрос insert и его работу, но как убедиться, что только тот элемент входит в таблицу, которая присутствует в корзине?

Vincent Maverick Durano

Вы просто перебираете элементы в своей корзине, а затем в цикле вызываете запрос Insert, чтобы вставить эти элементы в свою базу данных.