从一个数据库字段

时间:2017-04-11 19:55:39

标签: mysql asp-classic

不确定是否可能:

我有一个复选框列表如下:

<input type='checkbox' name="item" value="<%=rs("ID")%>" /> <%= rs("Item Name") %>

然后我选择了所选的值:

item_id = request.form("item")

写入一个名为item_selected的数据库字段,它是varchar(50)并在数据库中记录如下:

31,32,45

也不确定它是如何工作的,因为它不是一个数组(据我所知)并且我没有明确逗号分隔值。

但我想要做的是检索值并循环遍历每个ID并使该选项“已选中”(仅检查他们选择的项目),这是针对更新订单页面。

我尝试通过获取所有商品ID并尝试与他们选择的ID进行比较并使用“已选中”检查该选项来尝试这样做

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,您需要使用所选项(您的逗号分隔的id字符串)获取字段值。像这样:

Set rs = conn.execute("SELECT item_selected FROM tblTable WHERE iID = intSomeID") 'remember to handle SQL Injection
If Not rs.EOF Then
    strItemSelected = rs("item_selected") & ","
End If
rs.Close() : Set rs = Nothing

我不知道你的复选框来自哪里。但假设他们来自数据库。然后它看起来像这样:

Set rs = conn.execute("SELECT ID, ItemName FROM tblCheckboxes")
If Not rs.EOF Then
    While Not rs.EOF
        strChecked = ""
        If InStr(strItemSelected, CStr(rs("ID")) & ",") > 0 Then
            strChecked = " checked=""checked"""
        End If
        Response.Write("<input type=""checkbox"" name=""item"" value=""" & rs("ID") & """" & strChecked & " /> " & rs("ItemName") & "<br/>")
        rs.Movenext
    Wend
End If
rs.Close() : Set rs = Nothing

我没有测试过这段代码,但应该可以使用,但您可能需要调整一下以适合您的场景。

您还可以在逗号上拆分所选项目,如下所示:

arrItemSelected = Split(rs("item_selected"),",")

然后在循环和写出复选框的代码中,您可以检查值是否在数组中而不是执行InStr()。但是你需要为此编写一个函数或者从互联网上获取一些函数,因为VBScript没有内置函数可以做到这一点。