Попытка создать «корзину», в которой хранятся выбранные пользователем элементы, но после заполнения формы все данные из «корзины» вставляются в одну строку.
Пример:
OrderID StockID
Or002 IT01,IT02,IT03
Как разделить данные на строку каждый?
Предполагаемый результат:
OrderID StockID
Or002 IT01
Or002 IT02
Or002 IT03
Как это работает:
(Джаваскрипт)
var cartRowContents = `
<a class = "dec" id = "dec">-</a>
<input class = "quan-num" id = "number" name = "FQty" value = "1"/>
<a class = "inc" id = "inc">+</a>
<input type = "hidden" id = "FID" name = "FID" value=${id} />
<div class = "rem">REMOVE ITEM</div>`;
Вход с именем FID содержит переданное значение идентификатора элемента, выбранного пользователем;
Сгенерированный HTML-код будет вставлен в форму/корзину.
Пользователь не может добавить один и тот же элемент, но может изменить количество (значение <input name = "FQty"> ) с помощью <a id = "dec"> and <a id = "inc">.
(С#)
@functions{
public static String insD(Database db, String query) {
IEnumerable<dynamic> data;
data = db.Query(query); //Executing the Query
return query;
}
}
(веб-страницы ASP.NET)
@{
Database db = Database.Open("geh");
String m_OrderID = "Or002";
if (IsPost) { //if statement when form is submitted
string FID = Request.Form["FID"];
var Qty = Request.Form["FQty"];
String query = "INSERT INTO gah.order VALUES ('" + m_OrderID + "','" + FID + "','" + Qty + "')";
insD(db, query);
}
Что я пробовал:
(веб-страницы ASP.NET)
@{
if (IsPost) {
Database db = Database.Open("geh");
String m_OrderID = "Or002";
for(int i = 0; i < 2 ; i++){
var FID = Request.Form["FID"][i];
var Qty = Request.Form["FQty"][i];
String query = "INSERT INTO gah.orders VALUES ('" + m_OrderID + "','" + FID + "', '" + Qty + "')";
insD(db, query);
}
}
}
Приводит к вставке первого символа идентификатора.
Пример:
ID = "DE002"
OrderID StockID
Or002 D
Database Info:
OrderID(PK) varchar(10),
StockID(PK) varchar(10),
Qty int()
Да, потратил пару часов, пытаясь понять, как их разделить.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Если я правильно понимаю, ваша корзина будет иметь несколько полей как <input name=FID>, так и <input name=FQty>, так что при публикации формы Request.Form["FID"] и Request.Form["FQty"] будут списками, разделенными запятыми? Если это так, возможно, что-то вроде этого поможет:
var FID = Request.Form["FID"].Split(',');
var FQTY = Request.Form["FQty"].Split(',');
for(int i = 0; i < FID.Length; ++i)
{
String query = "INSERT INTO gah.orders VALUES ('" + m_OrderID + "','" + FID[i] + "', '" + FQTY[i] + "')";
insD(db, query);
}
Это немного сложно понять только с кодом, которым вы поделились, но дайте мне знать, если я на правильном пути.
Гудман, это сделало это для меня. Я благодарю вас за вашу помощь. Я часами ломал голову, так как я новичок в веб-программировании. Ваше здоровье!
Не повезло, значения, разделенные запятыми, - такой беспорядок. Никогда не храните данные таким образом, это вызовет много неприятностей.