【问题标题】:Looping an SQL statement on razor在 razor 上循环一条 SQL 语句
【发布时间】:2019-09-12 10:59:33
【问题描述】:

尝试创建一个“购物车”,其中包含用户选择的项目,但在表单完成后,“购物车”中的所有数据都将插入一行

例子:

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 的输入携带了用户选择的项目的 ID 的向下传递值; 生成的 HTML 代码将插入到表单/购物车中。 用户不能添加相同的项目,但可以使用 &lt;a id="dec"&gt; and &lt;a id="inc"&gt; 修改数量(&lt;input name="FQty"&gt; 的值)。

  1. 用户完成订单后,将运行以下代码

(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 的第一个字符。

例子:

ID = "DE002"

OrderID      StockID

Or002        D

Database Info:

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

【问题讨论】:

  • 运气不好,逗号分隔的值真是一团糟。千万不要这样存储数据,只会带来很多麻烦。
  • 是的,花了几个小时试图弄清楚如何将它们分开。

标签: javascript mysql sql asp.net razor


【解决方案1】:

如果我理解正确,您的购物车将包含&lt;input name=FID&gt;&lt;input name=FQty&gt; 的多个字段,因此在发布表单时,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);
}

仅使用您共享的代码有点难以理解,但如果我在正确的轨道上,请告诉我。

【讨论】:

  • 古德曼,这是为我做的。我感谢你的帮助。因为我是网络编程的新手,所以花了几个小时挠头。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多