2017-04-11 93 views
0

不知道这是否可能:从一个数据库中检索字段分隔数字

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

<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,他们选择的使用要做到这一点“检查”,检查该选项

任何帮助,将不胜感激。

+0

您只显示一个复选框,但我怀疑它们都具有相同的名称。这就是他们最终成为一个阵列的方式。 –

+0

是的,这是我的第一个倾向,但不确定。它遍历所有ID,用户可以选择他们想要的项目。所有这个'name ='item'' – rem

+0

如果我理解正确,你想知道如何将复选框标记为基于该字段中的内容进行检查。您可以将字段值转换为数组,并在创建每个复选框时,在数组中搜索特定复选框的值。如果找到,请将checked ='checked'添加到标签。 –

回答

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函数的代码()。但是你需要为它写一个函数,或者从Internet上获取一些函数,因为VBScript没有内置函数,就我所知。

+0

感谢你的回应。最初当用户选择了项目时,它会像这样保存到数据库中(在varchar(50)中):31,22,33。我需要的是,当我再次检索该字段时,将每个ID与商品ID进行比较,并检查用户选择的所有商品 – rem

+0

我有一些想法(可能是错误的),即获取该字段,将所有逗号和空格,所以你会得到313233,然后在一个while循环,直到变量为空是采取前2个字符/数字这将是31,然后将其与每个项目进行比较,当匹配使该复选框检查但只有问题是ID字段是自动增量,显然它从1开始,这是一个字符/数字。不知道你的解决方案是如何工作的,我对这种编程语言很陌生,所以这可能只是我缺乏知识。 – rem

+0

可以在数据库中更改此字段以保存为'01,02,03'等 – rem

相关问题