Зацикливание оператора SQL на бритве - PullRequest
0 голосов
/ 23 апреля 2019

Попытка создать «корзину», в которой пользователь хранит выбранные товары, но после заполнения формы все данные из «корзины» вставляются в одну строку

Пример:

OrderID     StockID
Or002       IT01,IT02,IT03

Как мне разделить данные на ряд?

Ожидаемый результат:

OrderID     StockID
Or002       IT01
Or002       IT02
Or002       IT03

Как это работает:

1) Пользователь нажимает кнопку, которая генерирует следующие HTML-коды.

(Javascript)

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">.

2) Когда пользователь выполнит заказ, будут запущены следующие коды

(C #)

@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

Информация о базе данных:

OrderID (PK) varchar (10), StockID (PK) varchar (10), Qty int ()

1 Ответ

0 голосов
/ 23 апреля 2019

Если я правильно понимаю, ваша корзина будет иметь несколько полей как <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);
}

Трудно понять только с кодом, которым вы поделились, но дайте мне знать, если я на правильном пути.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...